我正试图编写一个函数,将给定的文本字符串附加到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
实例的指针,而不是像代码中那样指向任何位置的指针。