C"double free or corruption"错误
C "double free or corruption" error
这是短代码,会产生 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);
我不明白,为什么我在先释放之前不能释放第二个表面。
通过 运行 surface = surface2;
语句,您使 surface
和 surface2
指针指向相同的内存区域。一旦你释放了它,它就是免费的。尝试再次释放它(通过另一个指针),将尝试释放已经释放的内存,导致此错误。
变量surface
和surface2
都指向同一个对象。您实际上释放了同一个对象两次。
这是短代码,会产生 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);
我不明白,为什么我在先释放之前不能释放第二个表面。
通过 运行 surface = surface2;
语句,您使 surface
和 surface2
指针指向相同的内存区域。一旦你释放了它,它就是免费的。尝试再次释放它(通过另一个指针),将尝试释放已经释放的内存,导致此错误。
变量surface
和surface2
都指向同一个对象。您实际上释放了同一个对象两次。