【发布时间】:2017-11-11 05:32:15
【问题描述】:
当我们在 C 中声明一个数组时...数组基本上是一个存储该数组基地址的指针..
例如:
int *x=malloc(5);
为堆中的那个数组“x”提供内存
现在,我的问题是......内存将分配给这种类型的数组声明
int x1[5];
假设 'x' &'x1' 都在函数中声明。
“x1”在内存中的位置。 它在堆栈中吗?还是在堆中?
【问题讨论】:
-
对于
x1,这实际上取决于定义的位置。还要注意,C 规范并没有真正提及“堆栈”或“堆栈”。 local 变量通常 最终位于堆栈上只是一个实现细节。 -
另请注意,如果
x被定义为函数中的局部变量,则您有两个 分配:一个用于变量x本身,一个用于分配的内存致电malloc。谈到malloc,C 规范并没有真正说明“堆”在哪里或是什么样的内存。 -
'当我们在C中声明一个数组时......数组基本上是一个指针,存储着该数组的基地址'没有。