调整c数组的结构以保存另一个结构

时间:2014-12-24 03:34:18

标签: c

我有一个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内存分配方面变得非常生疏。任何帮助都会很棒!

2 个答案:

答案 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。允许直接分配结构。