static int c[1000000];
int main()
{
cout << "done\n";
return 0;
}
非零初始化器将使编译器在 DATA 段中进行分配,DATA 段也是堆的一部分。(数组初始值设定项的所有数据将在可执行文件中占用空间,包括所有隐式的尾随零,而不仅仅是 BSS 中的大小为0-init)
int c[1000000] = {1, 2, 3};
int main()
{
cout << "done\n";
return 0;
}
这将在堆中某个未指定的位置进行分配:
int main()
{
int* c = new int[1000000]; // size can be a variable, unlike with static storage
cout << "done\n";
delete[] c; // dynamic storage needs manual freeing
return 0;
}