0
我有一個使用文件路徑字符串列表初始化的結構。但是,如果我嘗試在由這些字符串創建的SDL_Surfaces上調用SDL_DisplayFormat,則應用程序將無法啓動。它不會崩潰,它不會像平常一樣生成stdout.txt或stderr.txt,它只是無法啓動。編譯器不提供任何錯誤或警告。這是我的代碼:SDL_DisplayFormat使用initializer_list崩潰
struct Object {
std::vector<SDL_Surface*> surfaceVector;
Object(initializer_list<std::string> init) {
for (auto i : init) {
SDL_Surface* loadSurface = SDL_LoadBMP(i.c_str());
surfaceVector.push_back(SDL_DisplayFormat(loadSurface););
SDL_FreeSurface(loadSurface);
}
}
}
如果我不叫SDL_DisplayFormat,我可以訪問並在位塊傳輸的surfaceVector表面像正常的,所以他們似乎是正確加載。但是,我希望surfaceVector中的曲面處於顯示格式。
您是否檢查過「SDL_DisplayFormat(loadSurface)」的返回值是否爲空? –
由於應用程序不會真正開始,所以我無法打印或做任何類似的事情。但是,如果我刪除SDL_DisplaySurface()並添加一些代碼,如if(loadSurface == NULL)cout <<「null」else cout <<「not null」;那麼它仍然運行,但不會打印任何內容,並且stdout.txt不會生成,無論我在別處有多少個cout語句。所以我可能在別的地方做了一些奇怪的事情 – Exudes