"gtk_text_buffer_get_bounds"功能导致隔离错误
"gtk_text_buffer_get_bounds" function causes SEGFAULT
我正在编写一个GTK应用程序,我需要将一个字符串放入GtkTextBuffer中,然后将相同的文本提取回单独的字符串中。由于某种原因,我在"gtk_text_buffer_get_bounds"功能期间不断收到SEGFAULT错误。我认为这是"e"迭代器的问题,但我不确定。
我已将违规操作隔离到一个较小的示例程序中。下面的过程与我的应用程序中的过程没有区别。
我做错了什么?
#include <iostream>
#include <gtk/gtk.h>
int main ()
{
const char *string1 = "hello ", *string2;
GtkTextBuffer *text = gtk_text_buffer_new (NULL);
GtkTextIter *s, *e;
gtk_text_buffer_set_text (text, string1, -1);
gtk_text_buffer_get_bounds (text, s, e);
string2 = gtk_text_buffer_get_text (text, s, e, TRUE);
std::cout << string2 << std::endl;
return 0;
}
您将s
和e
声明为指针,并且它们默认初始化为 nullptr
,因此当 gtk_text_buffer_get_bounds
和 gtk_text_buffer_get_text
开始使用它们时,您会得到一个空指针取消引用和一个段错误:
GtkTextIter *s, *e;
...
gtk_text_buffer_get_bounds (text, s, e);
...
string2 = gtk_text_buffer_get_text (text, s, e, TRUE);
相反,您只需在堆栈上分配GtkTextIter
对象并传递它们的地址:
GtkTextIter s, e;
...
gtk_text_buffer_get_bounds (text, &s, &e);
...
string2 = gtk_text_buffer_get_text (text, &s, &e, TRUE);
相关文章:
- 从矢量中删除元素后出现隔离错误
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- 线程时访问静态映射时出现隔离错误
- 并行快速排序分区中的隔离错误
- C++多线程程序:变量定义为类成员的隔离错误
- TFLite 隔离错误,通过获取C++输入和输出
- 我只是在寻找模板,在我的书中找到了这段代码,这显示了隔离错误?
- pthread_create中错误 4 的隔离错误
- 递归树遍历/分支删除的隔离错误
- 在类模板上使用 arm gcc 编译期间的隔离错误
- 从大量文件读取时出现隔离错误
- 在PHP扩展中使用emalloc从线程时出现隔离错误
- 通过 Boost Python 在C++对象之间传递共享指针的隔离错误
- 在QT中单击菜单时出现隔离错误
- 尝试访问标头声明成员时出现隔离错误
- 搜索链表时出现隔离错误
- 模板化子类析构函数中的隔离错误
- 插件中节点.js/Nan 回调C++不频繁的隔离错误
- 将行添加到 GTKTreeView 时的隔离错误
- 找不到命令时打开的隔离错误