作者:手机点菜_748 | 来源:互联网 | 2023-01-31 12:46
这是产生double free or corruption
错误的短代码.
SDL_Surface *surface;
SDL_Surface *surface2;
surface = NULL;
surface2 = SDL_LoadBMP("someImg.bmp");
surface = surface2;
SDL_FreeSurface(surface);
SDL_FreeSurface(surface2);
我不明白,为什么我先解放前不能释放第二面.
1> chqrlie..:
这两个变量surface
,并surface2
指向同一个对象.您实际上可以释放两次相同的对象.
@Davey:分配时,根本不复制*内容*.由于`SDL_Surface`是SDL库的一种类型,并且有一个内部结构的链接,你不能自己复制它,但是你可以用`SDL_CreateRGBSurface()`创建一个新的匹配表面,并用`SDL_BlitSurface复制那里的数据. ()`.