gpt4 book ai didi

c - 在 C 中确定变量堆栈或堆?

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:21 26 4
gpt4 key购买 nike

假设我有这些变量和指针。我如何确定哪个在堆栈或堆中?

     #include <stdio.h>
#define SIZE 5


int main( void ) {

int *zLkr;
int *aLkr= NULL;
void *sLkr= NULL;
int num, k;
int a[SIZE] = { 1, 2, 3, 4, 5 };
zLkr = a;

}

最佳答案

您的所有变量都具有自 Action 用域。它们来自“堆栈”,因为一旦函数返回,变量就不再有效。

命名函数变量永远不可能来自您所说的“堆”。命名函数变量的内存始终绑定(bind)到函数作用域(或声明变量的函数内最内层的 block 作用域)。

一个变量可以被赋予一个通过malloc() 或类似的动态分配函数获得的值。该变量然后指向存在于“堆”中的对象。但是,命名指针变量本身在“堆”中。

有时“堆栈”本身是动态分配的。比如一个线程。然后,用于分配在该线程内运行的函数局部变量的内存位于“堆”中。然而,变量本身仍然是自动的,因为一旦函数返回它们就无效了。

关于c - 在 C 中确定变量堆栈或堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216736/

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