небольшая примерная программа, приведенная ниже, выдает ошибку подтверждения («settings! = 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?
Я забыл что-то важное?