C++ 将元素从fread复制到结构中

C++ 将元素从fread复制到结构中,c++,fread,memcpy,C++,Fread,Memcpy,我正在从这样的文件中读取切片: 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, vo

我正在从这样的文件中读取切片:

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);

}
我正在尝试这样做:

SliceProjLinePair *slice_packet;

memcpy(slice_packet->slices, &vol_buffer, vol_buffer_size);
但是这个memcpy崩溃了。如何从缓冲区中获取数据以适合切片数组

编辑:我现在这样分配结构:

 SliceProjLinePair *slice_packet = new SliceProjLinePair();

它并没有崩溃,但它只是在片[0]中填充值。我希望它在片[0]到片[3]中填充值。

如果目标区域不允许,或者如果源区域大小(vol\u buffer\u size)大于目标区域(slice\u packet->slices),memcpy可能会崩溃。如何为slice\u packet->slice分配内存?上面的代码不分配
slice\u packet
(例如
slice\u packet=new SliceProjLinePair();
),所以看起来
slice\u packet->slices
是未定义的行为。@Dan RECON\u IMG\u NUM\u X和RECON\u IMG\u NUM\u Y的值是多少?类似
valgrind
的东西适合调试读/写访问错误,因为这几乎可以肯定。@landstapper我想我没有正确分配它。我该怎么做?此外,RECON_IMG_NUM_X和Y的值分别为690和550。如果目标区域不允许,或者如果源区域大小(vol_buffer_size)大于目标区域(slice_packet->slices),memcpy可能崩溃。如何为slice\u packet->slice分配内存?上面的代码不分配
slice\u packet
(例如
slice\u packet=new SliceProjLinePair();
),所以看起来
slice\u packet->slices
是未定义的行为。@Dan RECON\u IMG\u NUM\u X和RECON\u IMG\u NUM\u Y的值是多少?类似
valgrind
的东西适合调试读/写访问错误,因为这几乎可以肯定。@landstapper我想我没有正确分配它。我该怎么做?此外,RECON_IMG_NUM_X和Y的值分别为690和550。
 SliceProjLinePair *slice_packet = new SliceProjLinePair();