приведенный ниже небольшой пример программы дает мне ошибку утверждения («настройки != NULL» не удалось), и я не могу понять, почему она считает, что указатель структуры настроек равен 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 и нашел строку 1213 файла utils/fluid_settings.c:
fluid_return_val_if_fail (settings != NULL, 0);
Но Fluid_return_val_if_fail — это просто простой макрос для вызова g_return_val_if_fail GLib (utils/fluid_sys.h:59).
Поскольку адрес настроек действителен, я не могу придумать что-то еще. Не правда ли, что указатели NULL указывают на адрес 0x00?
Я забыл что-то важное?