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