我的main()函数(使用EasyBMP)中有以下行:
RGBApixel * myPixel = myFavoriteColor(192);
定义为:
RGBApixel * myFavoriteColor(int intensity)
{
RGBApixel color;
color.Red = 0;
color.Green = intensity/2;
color.Blue = intensity;
return &color;
}
我在“删除myPixel”的行上收到以下错误:对象0x7fff5fbff9d0的malloc: *错误:未释放指针被释放 * 在malloc_error_break中设置断点以进行调试
为什么没有正确分配?
答案 0 :(得分:1)
您将返回本地变量color
的地址,该地址变量在退出函数myFavoriteColor
后无效。对象color
将在函数结束时销毁。而是通过将函数签名更新为RGBAPixel
并使用RGBAPixel myFavoriteColor(int)
return color;
的副本
修改强>
您还需要将RGBApixel * myPixel = myFavoriteColor(192);
更改为RGBApixel myPixel = myFavoriteColor(192);
。我相信你应该在进一步阅读之前阅读C++ book,因为这些是非常基本的概念。