下面的小示例程序給我一個斷言錯誤('設置!= NULL'失敗),我不明白爲什麼它認爲設置結構指針是NULL 。奇怪的fluidsynth聲明('設置!= NULL')結果
文件test.c的:
#include <fluidsynth.h>
int main(int argc, char** argv)
{
fluid_settings_t* settings = new_fluid_settings();
fluid_synth_setint(settings, "synth.polyphony", 128); //assertion error
delete_fluid_settings(settings);
return 0;
}
編譯時:GCC test.c的-lfluidsynth。
我試着打印由new_fluid_settings()返回的地址,但它似乎是一個有效的地址給我。
所以我已經通過fluidsynth 1.1.5源代碼搜索,並找出該文件utils的/ fluid_settings.c線1213:
fluid_return_val_if_fail (settings != NULL, 0);
但fluid_return_val_if_fail僅僅是一個簡單的宏調用的GLib的g_return_val_if_fail (utils的/ fluid_sys.h:59)。
由於設置地址是一個有效的地址,我想不出別的。 NULL指針指向地址0x00是不是真的?
我忘記了一些重要的東西嗎?
在gdb會話中,「p * settings」是做什麼的? – buddhabrot
嗨,剛剛運行new_fluid_settings函數後,它給了我<不完整類型>。 – LRMAAX