我有一个程序具有释放内存结构的功能。它通常工作正常,但有时它只是冻结。释放内存时程序冻结
这是我想免费为内存结构:
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->我的malloc线imgdata
Image *img= (Image*)malloc(sizeof(Image*));
img->imgdata[height*width]= (unsigned int*)malloc(height*width*sizeof(unsigned int*));
这是从多个线程调用? –
你的代码看起来不错。这将有助于了解你的malloc img和img-> imgdata。也许你不止一次地自由了? –
我不认为我不止一次地释放它。尽管如此,我认为我发现了一个问题。 imgdata并不总是有分配给它的内存。释放未分配的内存会导致此类冻结?如果是这样,我该如何检查内存是否已经分配给imgdata? – user2805460