C-SIGSEGV同时尝试附加到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实例的指针,而不是像代码中那样指向任何位置的指针。

相关内容

  • 没有找到相关文章

最新更新