У меня сейчас есть структура
typedef struct Entry {
int counter;
void *block;
} Entry;
и блок памяти mmap
void *memPtr = mmap(NULL, someSize*1024, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
, который я затем все время добавляю в первую часть (что глупо, но эта часть немного неактуальна) как таковой:
int AddEntry(void *data) {
Entry entry;
entry.counter = 1;
entry.block = malloc(sizeof(char *) * SECTOR_SIZE);
memcpy(entry.block, data, SECTOR_SIZE);
memcpy(&memPtr[0], &entry, sizeof(Entry));
return 0;
}
Проблема здесь в том, что длина Entry
составляет всего 16 байтов, поскольку block
- это void pointer
. Каков наилучший способ убедиться, что блок действительно имеет размер sizeof (char *) * SECTOR_SIZE и на самом деле имеет достаточно места для данных, и как можно загрузить data
в entry.block
?
Спасибо!