У меня есть следующая структура:
struct Some_Struct {
uint32_t a;
int16_t b;
uint8_t c;
};
struct Other_Struct {
uint32_t a;
uint32_t b;
uint32_t c;
};
Размер переменной рассчитывается так:
uint32_t size = sizeof(Some_Struct) + sizeof(Other_Struct) * n;
Мой вопрос, учитывая sizeof
Some_Struct и Other_Struct, чей фактический размер зависит от платформы, архитектуры и упаковки, как я могу во время выполнения определить максимальное количество n
разрешено раньше size
переворачивается?
Ты можешь использовать numeric_limits:
uint32_t maximum_n = (std::numeric_limits<uint32_t>::max() - sizeof(Some_Struct))
/ sizeof(Other_Struct);
Других решений пока нет …