Я программировал программу на C++, чувствительную к памяти, которая пытается наложить вторичный тип данных [мою структуру] на больший буфер uint8_t*. Тем не менее, по какой-то причине структура «сходит с ума» после чтения 8 байт, а в остальных переменных после этих начальных 8 байтов остаются ненужные данные. Это известная проблема в памяти C/C++ или мой код не на должном уровне? Мне бы очень хотелось узнать больше о тонкостях памяти C! Ниже приведена структура и пример того, что я делаю:
struct __attribute__((packed)) Packet {
char[4] magic;
uint32_t offset;
uint32_t size;
}
Ниже приведен пример того, что я делаю для наложения вторичного типа данных.
int packetsPassed = 0;
Packet* overlay = (Header*)((uintptr_t)buffer + (uintptr_t)(sizeof(Packet) *
packetsPassed));
Подробнее здесь: https://stackoverflow.com/questions/798 ... ructs-in-c