开发者

RGBApixel memory issue with EasyBMP c++

I have the following line in my main() function (which uses EasyBMP):

RGBApixel * myPixel = myFavoriteColor(192);

which is defined as:

RGBApixel * myFavoriteColor(int intensity)
{
RGBApixel color;
color.Red   = 0;
color.Green = intensity/2;
color.Blue  = intensity;
return &color;
}

and I'm getting th开发者_StackOverflowe following error on a line that says "delete myPixel": malloc: * error for object 0x7fff5fbff9d0: pointer being freed was not allocated * set a breakpoint in malloc_error_break to debug

Why is it not getting allocated correctly?


You are returning the address of the local variable color which will not be valid after exiting the function myFavoriteColor. The object color will be destroyed at the end of the function. Instead return a copy the object RGBAPixel by chnaging the function signature to RGBAPixel myFavoriteColor(int) and using return color;

EDIT

You need to change RGBApixel * myPixel = myFavoriteColor(192); to RGBApixel myPixel = myFavoriteColor(192); as well. I believe you should read a C++ book before going further as these are very basic concepts.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜