Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;GTKMM,在文本缓冲区中获得奇怪的输出_C++_Gtk_Gtkmm - Fatal编程技术网

C++ C++;GTKMM,在文本缓冲区中获得奇怪的输出

C++ C++;GTKMM,在文本缓冲区中获得奇怪的输出,c++,gtk,gtkmm,C++,Gtk,Gtkmm,我是Gtkmm新手,正在尝试将txt文件加载到文本缓冲区中。当我启动程序时,我得到如下输出: 填充文本缓冲区的代码如下所示: void ExampleGui::fill_buffers() { FILE *fp = fopen("/home/User/Documents/Gui/test1.txt", "r"); if (fp == NULL) exit(EXIT_FAILURE); char *line = NU

我是Gtkmm新手,正在尝试将txt文件加载到文本缓冲区中。当我启动程序时,我得到如下输出:

填充文本缓冲区的代码如下所示:

void ExampleGui::fill_buffers()
{
    FILE *fp = fopen("/home/User/Documents/Gui/test1.txt", "r");
    if (fp == NULL)
        exit(EXIT_FAILURE);

    char *line = NULL;
    size_t len = 0;
    char *output = NULL;
    while ((getline(&line, &len, fp)) != -1) {
        output = line;
    }
    fclose(fp);
    if (line)
        free(line);

    m_refTextBuffer1 = Gtk::TextBuffer::create();
    m_refTextBuffer1->set_text("Welcome!\nClick the button Show Text to start.");

    m_refTextBuffer2 = Gtk::TextBuffer::create();
    m_refTextBuffer2->set_text(Glib::convert_with_fallback(output, "UTF-8", "ISO-8859-1"));

}

我如何修复错误的输出以及为什么得到它?

这里的主要问题是分配
output=line
,然后是
free(line)

因为
输出
指向与
相同的内存,这意味着
输出
无效

在处理完字符串之前不要释放内存,或者在
中复制字符串(分配不执行此操作)