C - SIGSEGV 试图附加到 GTKTextBuffer

C - SIGSEGV Whilst trying to append to GTKTextBuffer

我正在尝试编写一个函数来将给定的文本字符串附加到我的 GTKTextBuffer 的末尾,但是我遇到了我认为是内存分配问题的问题?

所以,这是我编写的用于执行追加的函数:

void append_to_log(GtkTextBuffer *buffer, char* strToSave) {

    GtkTextIter *iter;

    gtk_text_buffer_get_end_iter(buffer, iter);

    gtk_text_buffer_insert(buffer, iter, strToSave, strlen(strToSave));

}

当我尝试启动我的程序并使用函数添加 "Logging started... \n" 消息时...

append_to_log(loggingBuffer, "Logging started... \n");

...我收到此错误:

/home/csc/CLionProjects/SDS-CW/GUIs/Server/cmake-build-debug/SDS-CW
*** stack smashing detected ***: <unknown> terminated

但是,当我尝试手动添加第一行时,它工作正常:

gtk_text_buffer_set_text(loggingBuffer, "Logging started... \n", 20);

所以我尝试手动设置一个初始行,然后再添加一个新行...

gtk_text_buffer_set_text(loggingBuffer, "Logging started... \n", 20);
append_to_log(loggingBuffer, "Logging continued... \n");

...我遇到了分段错误。

有什么地方出了问题吗?我该如何解决这个问题?

非常感谢。

GtkTextIter iter;
gtk_text_buffer_get_end_iter(buffer, &iter);

您需要提供指向现有 GtkTextIter 实例的指针,而不是指向任何地方的指针,就像您的代码中那样。