我的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/

10-08 22:27