如何减少CPP中大结构的尺寸

时间:2021-08-01 21:35:34

标签: c++

例如:

typedef struct emp_t {
   private :
   uint8_t highestEmpData {INVALID_OPTION}; // INVALID_OPTION = 0xff;
   std::array<std::salary<bool>, MAX_NUM_OF_ACTIVE_EMP> salaryToTransmit {}; 
   //MAX_NUM_OF_ACTIVE_EMP = 11;
   std::array<std::salary,<uint32_t>, MAX_NUM_OF_EMP> amountOfDataAvailablePerEmp{}; 
   //MAX_NUM_OF_EMP = 8; 
   std::array<EventsList, MAX_NUM_OF_ACTIVE_EMP> aBuffer {};
   std::array<EventsList, MAX_NUM_OF_ACTIVE_EMP> bBuffer {};
   std::array<UlRbContext_t, MAX_NUM_OF_ACTIVE_EMP> rbCon {};
   std::array<Lc_t, MAX_NUM_OF_EMP>PriorityList {};  
   uint8_t availableBs {MAX_NUM_OF_BS}; // MAX_NUM_OF_BS = 8;
   uint8_t availableSr {MAX_NUM_OF_SR}; // MAX_NUM_OF_SR =3;
} emp_t;

main() {
   emp_t empl[MAX_NUM_OF_EMP]; // here MAX_NUM_OF_EMP = 180;
}

我想更改 MAX_NUM_OF_EMP = 1000 但这里的问题是 emp_t 大小 会很大,所以我怎样才能减小 emp_t 的大小?例如:对于 MAX_NUM_OF_EMP =180 大小为 180 * emp_t 大小(大约 500kb)。如果我 将其更改为 1000,然后大小变为 1000 * 500kb = 巨大的大小。

1 个答案:

答案 0 :(得分:0)

<块引用>

如何减小 emp_t 的大小?

使用间接。您可以动态分配它们,并存储间接引用它们的指针,而不是直接将大数组存储为成员。或者甚至更好,使用 std::vector 负责内存管理。这种设计还有一个更好的好处:向量中的元素数量不需要恒定。

您还必须避免大型自动变量,因此您应该动态分配数组 emplstd::vector 在这种情况下也很有用。