これはdouble free or corruption
というエラーを生成する短いコードです。"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);
私が理解できない理由は、私が最初に解放する前に第2面を解放できない理由です。
アドレスなしでコンテンツのみを割り当てる方法をご存知ですか? – Davey
@Davey: 'SDL_Surface'オブジェクトを複製するためのSDL APIがあるかもしれません。また、ビットマップを2回ロードすることもできます。構造をコピーすることは、どちらもうまくいきません。 – chqrlie
@Davey:あなたが割り当てたときに*コンテンツ*を一切コピーしません。 'SDL_Surface'はSDLライブラリの一種であり、内部構造体へのリンクを持っているので、自分でコピーすることはできませんが、' SDL_CreateRGBSurface() 'で新しいマッチングサーフェイスを作成し、' SDL_BlitSurface () 'を返します。 –