顯然SDL_Mixer中的這個函數不斷死亡,我不知道爲什麼。有沒有人有任何想法?根據visual studio,崩潰是由Windows觸發realloc()行某處的斷點引起的。realloc在之前穩定的函數中崩潰
有問題的代碼來自SDL_Mixer的SVN版本,如果這有所作爲。
static void add_music_decoder(const char *decoder)
{
void *ptr = realloc(music_decoders, num_decoders * sizeof (const char **));
if (ptr == NULL) {
return; /* oh well, go on without it. */
}
music_decoders = (const char **) ptr;
music_decoders[num_decoders++] = decoder;
}
我使用Visual Studio 2008,並music_decoders和num_decoders都是正確的(music_decoders包含一個指針,字符串「WAVE」,並music_decoders。PTR是00000000,並盡我所知道的,崩潰似乎在realloc()函數中,有沒有人有任何想法我可以處理這個崩潰問題?我不介意爲了完成這個工作而做一些重構,如果涉及到這個問題的話。
你在建立調試模式嗎?如果是這樣,你可以在這裏獲得更多的細節。它究竟在哪裏崩潰?它爲什麼觸發一個斷點? (Windows通常會告訴你爲什麼)等等。 – arke 2009-06-06 20:44:57
大廈在調試模式下,複製SDL_Mixer.DLL文件,目前正使用它生成到程序* .pdb文件,建築/在調試模式下運行該程序,而當它崩潰,我看到飛機墜毀在上面的是區。 – Sukasa 2009-06-06 21:00:44
這是標記C++,但SDL項目是用C寫在C++中,你可能會使用一個std ::向量,以避免有機會得到這個錯誤... – 2009-06-06 23:40:49