Arrays (C)什么;静态数组和初始化列表的动态数组之间的区别是什么?

Arrays (C)什么;静态数组和初始化列表的动态数组之间的区别是什么?,arrays,c++11,memory-management,memory-segmentation,Arrays,C++11,Memory Management,Memory Segmentation,例如,有一个包含数千个元素的int数组: static int st_indices[9999] = { 0, 27, 26, 1, 41, 71, 0, 26, 101, 0, 101, 131, 0, 131, 72, 1, 71, 176, 2, 56, 206, 3, 116, 236, 4, 146, 266, 5, 161, 296, ...... }; 及 上述两种方法之间有什么区别,特别是大括号中的值在

例如,有一个包含数千个元素的int数组:

static int st_indices[9999] = {
   0,  27,  26,    1,  41,  71,    0,  26, 101,    0, 101, 131,    0, 131,  72,
   1,  71, 176,    2,  56, 206,    3, 116, 236,    4, 146, 266,    5, 161, 296,
......
};

上述两种方法之间有什么区别,特别是大括号中的值在内存使用上有什么区别?


我知道st_索引将一直保存在内存中,直到程序结束(堆栈),而dy_索引将在
delete[]
(堆)之后释放。或者这是关于堆栈与…数据段的问题?

静态是在编译时完成的…(设置内存量,又称堆栈)

动态分配是在运行时完成的(动态分配,可以是任何大小,取决于系统限制,也称为堆)

从中,我了解到操作系统将读取可执行文件的内容,并将其加载到内存中。

也就是说,大括号中的数据将加载到内存的.TEXT段中。如果我们不考虑虚拟内存/分页,将数据放在文件中然后读入,将减少内存使用(对于OpenGL应用程序)

int* dy_indices = new int[9999] {
   0,  27,  26,    1,  41,  71,    0,  26, 101,    0, 101, 131,    0, 131,  72,
   1,  71, 176,    2,  56, 206,    3, 116, 236,    4, 146, 266,    5, 161, 296,
......
};