栈和堆的内存分配

2024-03-24

这似乎是一个非常基本的问题,但它一直在我的脑海中:

当我们分配一个局部变量时,它会进入堆栈。类似地,动态分配会导致变量位于堆上。现在,我的问题是,这个变量实际上位于堆栈还是堆上,还是我们只是堆栈和堆中的引用。

例如,

假设我声明一个变量int i。现在这个i分配在堆栈上。所以,当我打印地址时i,这将是堆栈上的位置之一?对于堆也有同样的问题。


我不完全确定你在问什么,但我会尽力回答。

下面声明一个变量i在堆栈上:

int i;

当我使用以下方式询问地址时&i我得到了堆栈上的实际位置。

当我使用动态分配某些东西时malloc,实际上有TWO正在存储的数据片段。动态内存分配在堆上,指针本身分配在堆栈上。所以在这段代码中:

int* j = malloc(sizeof(int));

这是在堆上为整数分配空间。它还在堆栈上为指针分配空间(j)。变量j的值设置为返回的地址malloc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

栈和堆的内存分配 的相关文章

  • 如何在 ASP.NET MVC 中将 XML 文件发送到客户端

    在 ASP NET MVC 中 我有一个数据库表 我想在某个视图页面上有一个按钮 如果某个用户单击该按钮 我的应用程序将生成包含数据库中所有行的 XML 文件 然后 应将包含 XML 的文件发送到客户端 以便用户看到下载弹出窗口 同样 我希
  • getline 之后返回到文件开头

    所以我已经从文件中读取了所有行 while getline ifile line logic 其中 ifile 是 ifstream line 是字符串 我的问题是我现在想再次使用 getline 并且似乎无法返回到文件的开头 因为运行 c
  • C# 异步任务比同步慢

    你知道为什么同步斐波那契方法比异步 等待更快并且比异步任务更快吗 我在每个项目方法上都使用了异步 所以主要是这是一个非常糟糕的方法 Code static int FibonacciSync int number if number 0 r
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 预编译头和 Visual Studio

    有没有办法设置 Visual Studio 解决方案参数 以便它只创建预编译头而不构建整个解决方案 具体来说 它是一个巨大的 C 解决方案 本身有许多项目 谢谢 仅选择 pch 创建者源文件 通常是 stdafx cpp 然后编译该文件 C
  • C# 中的抽象类和接口类有什么不同?

    C 中的抽象类和接口类有什么不同 An 接口不是类 它只是一个contract定义了public一个类的成员must实施 抽象类只是一个类 您从中可以cannot创建一个实例 通常您会使用它来定义一个基类 该基类定义了一些virtual方法
  • 为什么 BinaryFormatter 可以序列化 Action<> 但 Json.net 不能

    尝试序列化 反序列化 Action 尝试我的 1天真 JsonConvert SerializeObject myAction JsonConvert Deserialize
  • 如何调试.NET Windows Service OnStart方法?

    我用 NET 编写的代码仅在作为 Windows 服务安装时才会失败 该故障甚至不允许服务启动 我不知道如何进入 OnStart 方法 如何 调试 Windows 服务应用程序 http msdn microsoft com en us l
  • std::make_pair 与浮点数组(float2,无符号整数)

    我有一个用 float2 unsigned int 对模板化的向量 例如 std vector
  • Windows 上本机 C++ 应用程序中的自动死代码检测?

    背景 我有一个用原生 C 编写的应用程序 花了几年的时间 大约有 60 KLOC 有很多函数和类已经死了 可能有 10 15 就像下面提出的类似的基于 Unix 的问题 我们最近开始对所有新代码进行单元测试 并尽可能将其应用于修改后的代码
  • 从 C# 调用时无法识别 Powershell 命令

    这是这个的延续Question https stackoverflow com questions 66280000 powershell object returns null 66280138 noredirect 1 comment1
  • 在 C# .NET 中对非 ASCII 字符进行编码

    我想向我的应用程序发送的电子邮件添加自定义标头 标头名称只能包含 ASCII 字符 但对于值和用户可能会输入 UTF 8 字符 我必须对它们进行 Base64 编码 此外 我还必须将它们解码回 UTF 8 以便在 UI 中向用户显示它们 最
  • 使用 cmake 将两种解决方案合二为一

    我有两个单独的 Visual Studio 2013 解决方案 我想将它们迁移到一个解决方案中 因为第一个解决方案 使用 Qt 充当第二个解决方案的 GUI 最后 我希望有一个结构如下的单一解决方案 Solution All Build P
  • 应在堆栈上分配的最大数量

    我一直在寻找堆栈溢出有关应在堆栈上分配的最大内存量的指南 我看到了堆栈与堆分配的最佳实践 但没有关于应该在堆栈上分配多少以及应该在堆上分配多少的指南 有什么想法 数字可以作为指导吗 什么时候应该在堆栈上分配 什么时候应该在堆上分配 多少才算
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • C - 获取外部IP地址

    我需要通过 C C 调用获取我的公共 IP 地址 我知道作为替代方案 我可以从 http whatismyip akamai com 等外部链接获取 我写了一个示例来获取外部IP地址 但我的程序没有返回外部 IP 地址 我正在获取内部 IP
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • 使用任务的经典永无止境的线程循环?

    给出了一个非常常见的线程场景 宣言 private Thread thread private bool isRunning false Start thread new Thread gt NeverEndingProc thread S
  • Unity - 在生成时获取随机颜色

    我有一个小问题 我想在我的场景中生成四边形 它们都应该有红色或绿色作为材质 但 Random Range 函数只能是 int 我该如何解决它 void SpawningSquadsRnd rndColor 0 Color red rndCo

随机推荐

  • 使用 Sun 专有的 Java 类是一种不好的做法吗?

    如果您使用 Sun 专有的 Java 类 编译器会显示警告 我认为使用这些类通常是一个坏主意 我在某处读到过这个 然而 除了警告之外 还有什么根本原因不应该使用它们吗 因为它们是内部 API 它们可能会发生变化无证的 or 不支持的方式并且
  • 尝试使用 RSA 密钥通过 SSH 访问 EC2,获取:不正确的 RSA1 标识符...权限被拒绝(公钥)

    我在 Amazon EC2 上创建了一个 Ubuntu 12 04 实例 我已经下载了 PEM 文件并且能够通过 SSH 连接到实例 没有问题 现在 我想在远程实例上为顾问等创建一些帐户 他们应该能够使用 RSA 密钥通过 ssh 进入盒子
  • RecyclerView 中删除项目后重叠视图

    删除 RecyclerView 中的项目会导致视图重叠 如下视频所示Link https youtu be bQs9DOAL614 片段 feed xml
  • Kivy 更新动态标签文本

    我的目标是观察数字Popup 我有一个NumericProperty正在加载 然而 当回调被调用时 数字不会改变 我在回调中没有任何代码链接到 label text 类似的问题也被问过 但是 我一直无法看到它们如何应用于这个具体案例 类似案
  • 在Python中,为什么list(None)是错误而[None]不是?

    Passing None到Python的list构造函数是一个TypeError gt gt gt l list None Traceback most recent call last File
  • 将服务绑定到活动或片段?

    我正在开发一个音乐播放器应用程序 我有一个主要活动 其中有多个片段 每个片段都在设备上显示歌曲专辑 艺术家等 我有一个音乐服务来处理所有的播放和其他事情 我感到困惑的是该服务与我拥有的各种片段的绑定 现在 我正在将主要活动和每个片段分别与服
  • xcodebuild 命令无法生成 iPA

    在 xcode 9 2 中 我使用自动签名生成存档 开发人员证书和配置文件是通过 xcodebuild 命令生成的 allowProvisioningUpdates key 但是 当通过 xcodebuild 命令生成 iPA 时 该存档会
  • Dart资源包抛出Unsupported operation in Flutter

    我的 Flutter 项目使用自己开发的 Dart 包 而该包又依赖于resource https pub dev packages resource包裹 在 Flutter 项目中使用我的包会引发Unsupported operation
  • 优雅地访问networkx中的边缘属性

    确实是这样的情况 要访问 networkx 中的边缘属性 下面尴尬的第三种形式是必要的 并且更简洁的前两种形式的任何变体都行吗 import networkx as nx G nx Graph G add edge 1 2 weight 4
  • 尝试加载 --- 我的网站时,服务工作人员获取错误?

    我最近将 Cloudfront 添加到我的网络应用程序中 我正在使用 WorkBox 服务工作者并收到错误 VM7 workbox strategies prod js 1 未捕获 承诺 TypeError 无法获取 我发现从这个帖子 ht
  • 链接到外部 URL - 目前不成功

    当我尝试链接一个 ext Url 时 例如www facebook com目前它是 mysite com music www facebook com 其链接为 a href a
  • 如何在 IntelliJ 中为整个项目配置“缩短命令行”方法

    当我运行测试时 出现错误 命令行太长 如果我将运行 调试配置中的 缩短命令行 方法设置为特定方法或类的 JAR 清单 它会起作用 但如何为整个项目设置它 或者是否有 IDE 全局设置 在 idea 文件夹中 更改workspace xml
  • 安装包失败并显示: if (file.exists(dest) && file.mtime(dest) 中出现错误

    我正在尝试安装重新思考 httr set config httr config ssl verifypeer 0L with config use proxy http myco com 5555 install github rmcelr
  • JQuery Onselect?

    当我输入 DPRtelephonenumber 时 我想在 DPRcallerhometelephonenumber 中重复它 只要我打字 这个脚本就可以工作 但是 如果 提供以前使用的值的下拉列表 并且我选择它 则 不会被设置 那么 除了
  • 禁用 UITableview 触摸时显示选择时出现问题?

    我使用 IB 并取消选中 触摸时显示选择 但它仍然在选定的单元格上显示蓝色突出显示 这是苹果的错误还是我出了问题 这可能是 IB 中的一个错误 正如您在文档中看到的那样 表视图没有任何用于在触摸时显示选择的属性 它是 tableview c
  • 在 python Altair 图中的热图中添加间距

    是否可以在使用创建的热图中添加一些间距mark rect 在 Altair python 图中 图 1 中的热图将转换为图 2 中的热图 您可以假设这是来自dataframe每列对应一个变量 我故意像这样画白条以避免任何硬编码的索引解决方案
  • java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

    我正在尝试使用页面工厂和页面对象模型运行一个Java项目 我想在Chrome IE和Firefox上运行它 但我无法在Firefox上运行它 浏览器无法打开 我得到了这个错误 java lang NoClassDefFoundError o
  • 如何减小 NTFS 中文件夹索引文件的大​​小?

    我有一个 NTFS 文件夹 其中包含数万个文件 我已删除该文件夹中的所有文件 保存 1 我运行 contig exe 对该文件夹进行碎片整理 因此现在它仅包含 1 个片段 然而 该文件夹的大小仍然是 8MB 这意味着该指数存在很大差距 这是
  • 手动创建类以映射到 XML 请求响应

    我被指派实现一个使用 XML 请求 响应的 API 接口 API 提供商不为 XML 调用提供任何 xsd 我使用 xsd exe 生成了 C 类 xml gt xsd gt cs 但是 我发现生成的类并不令人满意 因为调用包含大量列表 而
  • 栈和堆的内存分配

    这似乎是一个非常基本的问题 但它一直在我的脑海中 当我们分配一个局部变量时 它会进入堆栈 类似地 动态分配会导致变量位于堆上 现在 我的问题是 这个变量实际上位于堆栈还是堆上 还是我们只是堆栈和堆中的引用 例如 假设我声明一个变量int i