gpt4 book ai didi

c - Stack 和 Heap 中的内存分配

转载 作者:太空狗 更新时间:2023-10-29 16:28:12 25 4
gpt4 key购买 nike

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

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

例如,

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

最佳答案

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

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

int i;

当我使用 &i 请求地址时,我得到了堆栈上的实际位置。

当我使用 malloc 动态分配某些内容时,实际上存储了 两个 数据。动态内存分配在堆上,指针本身分配在栈上。所以在这段代码中:

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

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

关于c - Stack 和 Heap 中的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com