我有一个具有释放结构内存功能的程序。它通常工作正常,但有时它只是冻结。
这是我试图释放内存的结构:
struct Image {
unsigned int height;
unsigned int width;
unsigned int maxvalue;
unsigned int *imgdata[];
};
这是释放内存的功能(printfs 只是在那里检查它在哪里冻结)
void Image_Delete (Image *img)
{
printf("1");
free(img->imgdata);
printf("1");
free(img);
printf("1");
}
有时这可以正常工作,但程序通常会冻结在free(img);
. Image_Delete
我的功能有什么错误吗?
这是我的 img 和 img->imgdata 的 malloc 行
Image *img= (Image*)malloc(sizeof(Image*));
img->imgdata[height*width]= (unsigned int*)malloc(height*width*sizeof(unsigned int*));