大结构的长数组:更喜欢堆还是堆栈分配
Long array of big structs: prefer heap or stack allocation?
我有一个结构,里面有很多数据:
struct myStruct
{
char name[128], desc[128];
struct Prm { char p_name[32]; int p_val; } parameter[512];
char Reserved[256];
};
如上例所示,假设没有填充,整个结构的大小为18944字节;我需要128个,总计2424832字节,超过2兆字节。
我需要在全局范围内声明这个数组,分配它的最佳方式是什么?我应该只做myStruct myData[128];
还是将其声明为指针,并在程序退出时先用new[]
初始化,然后用delete[]
初始化?或者可能是矢量?
将其声明为一个简单的数组会扰乱堆栈吗?我怎么能确定它没有问题?
您的列表中更好的选项是std::vector<>
大型数组的风险在于破坏您的堆栈。全局变量不在堆栈中,所以没关系。
相关文章:
- 从堆栈分配的原始指针构造智能指针
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- 堆栈分配的类类型.为什么两个 ID 实例的地址相同?
- C++析构函数调用两次,堆栈分配的复合对象
- 了解通过引用传递取消引用指针时C++堆/堆栈分配
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 何时在函数中声明堆栈分配变量?
- 使用 std::map 的递归堆栈分配如何工作?
- tcmalloc 与纯堆栈分配性能有多接近
- 安全分配堆栈分配的阵列
- C++ 中的黑白堆分配对象和堆栈分配对象的性能差异
- 跟踪(堆栈分配)对象
- 堆栈分配的确切时间
- 未初始化的值是由堆栈分配 - Qt - C++创建的
- 用于堆栈分配对象的C++虚拟析构函数内联
- C STD :: BAD_ALLOC来自堆栈分配
- 是使用COM创建的对象,将采用分配或堆栈分配的内存
- C++ 中针对大型的堆栈分配
- 堆栈分配的向量如何在 C++ 中扩展