大结构的长数组:更喜欢堆还是堆栈分配

Long array of big structs: prefer heap or stack allocation?

本文关键字:堆栈 分配 更喜欢 结构 数组      更新时间:2023-10-16

我有一个结构,里面有很多数据:

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<>

大型数组的风险在于破坏您的堆栈。全局变量不在堆栈中,所以没关系。