我有一个c结构定义如下:
typedef struct
{
int data_size;
BYTE* data;
} IMAGE;
我有另一个这样的结构
typedef struct
{
int nimages;
IMAGE* images;
} IMGARR
我希望能够重新分配images
以保留另一个sizeof(IMAGE)
结构,这样我就可以用他们的二进制数据保留一组图像。
以下是我一直在尝试的事情
IMGARR* image_temp = imgarr->images; //store pointer
image_temp = realloc(&image_temp, (imgarr->nimages + 1) * sizeof(IMAGE)); //realloc memory
memcpy(&imgarr->images[imgarr->nimages], &my_new_image, sizeof(IMAGE));
这似乎根本不起作用。我似乎在c内存分配方面变得非常生疏。任何帮助都会很棒!
答案 0 :(得分:1)
正确的方法是:
IMGARR* image_temp = realloc(imgarr->images, (n+1) * sizeof(IMAGE)); /* n = New size */
if(image_temp != NULL)
imgarr->images = image_temp;
答案 1 :(得分:0)
您没有更改imgarr->images
指向的内容。检查image_temp
NULL
,但如果您有空格,请在尝试写入之前重新分配->images
。
此外,不需要memcpy
。允许直接分配结构。