在c(和c ++)中,可以通过以下方式创建整数数组:
int a[const];
Run Code Online (Sandbox Code Playgroud)
const是编译时常量,或者
int *a = (int *) malloc(...);
Run Code Online (Sandbox Code Playgroud)
根据我的理解,第一个在堆栈上分配内存,第二个在堆上分配内存.现在,据我所知,堆栈上的内存是按顺序排列的,程序可以根据需要从顶部弹出.这意味着阵列中的元素不一定按顺序存储,这听起来很奇怪.
究竟是什么发生在这里?
编辑:
谢谢回复人员.随着你的回答和一些跟进谷歌搜索我找到了我的困惑的来源.我假设程序只会真正使用堆栈的顶部变量,并逐个打开/关闭它们.