Я читаю фрагменты из файла следующим образом:
unsigned short vol_buffer[vol_buffer_size]; //vol_buffer_size = SLICE_SIZE * 4. SLICE_SIZE = 759000 bytes
for (int j = 0; j < num_slps; j++){ //num_slps is 138 in this case
nItemsRead = fread(&vol_buffer, SLICE_SIZE, 4, volFile);
}
Я хочу скопировать данные из vol_buffer в массив слайсов в структуре SliceProjLinePair:
typedef struct
{
SliceHeaders slice_headers[4];
unsigned short slices[4][RECON_IMG_NUM_X*RECON_IMG_NUM_Y]; // slice data
unsigned short proj_lines_00[6][NUM_PROJ_COLS]; // 0 deg proj image lines
unsigned short proj_lines_90[6][NUM_PROJ_COLS]; // 90 deg proj image lines
}__attribute__((packed)) SliceProjLinePair;
I Я пытаюсь сделать что-то вроде этого:
SliceProjLinePair *slice_packet;
memcpy(slice_packet->slices, &vol_buffer, vol_buffer_size);
Но этот memcpy вылетает. Как мне получить данные из буфера, чтобы они поместились в массив ломтиков?
Редактировать: Я сейчас распределяю структуру следующим образом:
SliceProjLinePair *slice_packet = new SliceProjLinePair();
и она не падает, но это только заполняет значения в срезах [0]. Я хочу, чтобы он заполнял значения в срезах [0] через срезы [3].