Arrays (C)什么;静态数组和初始化列表的动态数组之间的区别是什么?
例如,有一个包含数千个元素的int数组: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, ...... }; 及 上述两种方法之间有什么区别,特别是大括号中的值在
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,
......
};