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

问题描述

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

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

library(dplyr)
iris %>% 
    group_by(Species) %>% 
    summarise(across(everything(),~
       list(identify_outliers(cur_data(),all_of(cur_column())))),.groups = 'drop')
# A tibble: 3 x 5
#  Species    Sepal.Length     Sepal.Width      Petal.Length     Petal.Width     
  <fct>      <list>           <list>           <list>           <list>          
#1 setosa     <df[,6] [0 × 6]> <tibble [2 × 6]> <tibble [4 × 6]> <tibble [2 × 6]>
#2 versicolor <df[,6] [0 × 6]> <df[,6] [0 × 6]> <tibble [1 × 6]> <df[,6] [0 × 6]>
#3 virginica  <tibble [1 × 6]> <tibble [3 × 6]> <df[,6] [0 × 6]>

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

解决方法

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

因为 output 指向与 line 相同的内存,这意味着 output 变得无效。

要么在处理完字符串之前不要释放内存,要么复制 line 中的字符串(赋值不会做).