2
按照documentation爲爲什麼SDL_GetWindowWMInfo()需要SDL版本?
SDL_bool SDL_GetWindowWMInfo(SDL_Window* window,
SDL_SysWMinfo* info)
SDL_SysWMinfo* info
的SDL_Version version
構件必須在編譯時SDL_VERSION
宏被傳遞之前被定義。
爲什麼SDL_GetWindowWMInfo
要求SDL版本調用代碼對編譯?如果SDL_GetWindowWMInfo
未檢查SDL版本,會發生什麼情況?
視頻實現檢查,如果他們是同一SDL版本原調用一部分(例如['WIN_GetWindowWMInfo'](https://github.com/soulik/libsdl2/blob/1e51e5a6b046031302b00fddeafcac04ccd5926e/src/video/windows /SDL_windowswindow.c#L642),['X11_GetWindowWMInfo'](https://github.com/soulik/libsdl2/blob/1e51e5a6b046031302b00fddeafcac04ccd5926e/src/video/x11/SDL_x11window.c#L1412))。但我不確定這是爲什麼,因爲我從來沒有見過將這些實現隔離在單獨的二進制文件中。另外,我認爲'SDL_GetWindowWMInfo'可以自己做到這一點。 –
如果SDL被更新(而不用重新編譯程序,只是一個動態庫)通過SysWMinfo(的SysWMinfo增加,因此工會的大小)與新的視頻實現及其自曝更多的數據 - 這呼叫將重踏記憶,因爲它會嘗試寫超過字節被分配。或者現有視頻系統的佈局發生變化。它似乎並沒有得到很好的保護,儘管我已經說過,儘管我已經看到了內存在野外跺腳,但它最多隻能填充信息結構。 – keltar
爲什麼連接器不能捕獲這些東西? –