例如:
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 = 巨大的大小。
答案 0 :(得分:0)
如何减小 emp_t 的大小?
使用间接。您可以动态分配它们,并存储间接引用它们的指针,而不是直接将大数组存储为成员。或者甚至更好,使用 std::vector
负责内存管理。这种设计还有一个更好的好处:向量中的元素数量不需要恒定。
您还必须避免大型自动变量,因此您应该动态分配数组 empl
。 std::vector
在这种情况下也很有用。