【发布时间】:2011-12-12 17:21:28
【问题描述】:
下面的小示例程序给了我一个断言错误('settings != NULL' failed),我不明白为什么它认为设置结构指针为 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”有什么作用?
-
嗨,它在运行 new_fluid_settings 函数后给了我
。