我的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”的行上收到以下错误:malloc: *对象0x7fff5fbff9d0的错误:正在释放的指针未分配
* 在malloc_error_break中设置一个断点进行调试
为什么分配不正确?
最佳答案
您将返回局部变量color
的地址,该地址在退出函数myFavoriteColor
后将无效。对象color
将在函数末尾销毁。而是通过将函数签名更改为RGBAPixel
并使用RGBAPixel myFavoriteColor(int)
来返回对象return color;
的副本
编辑
您还需要将RGBApixel * myPixel = myFavoriteColor(192);
更改为RGBApixel myPixel = myFavoriteColor(192);
。我相信您应该先阅读C++ book,然后再继续,因为这些是非常基本的概念。
关于c++ - EasyBMP c++的RGBApixel内存问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4813292/