在QFile :: setFileName上获取分段错误

时间:2015-02-03 20:38:33

标签: c++ qt qt4 ros

对于使用ROS rqt + Qt4的日志记录功能,我尝试写入硬编码文件夹层次结构中的多个文件。

我有一个继承自QtWidget的父类,它拥有多个QFile *成员。然后我用* filehandle = new QFile(this)为它们分配存储空间。

写入文件工作正常,但如果我尝试在文件句柄上设置文件名以读取日志文件,我会立即得到分段错误。但是,并非所有文件都可以看到在哪些文件路径受影响时没有一致的模式。

2 个答案:

答案 0 :(得分:1)

有些代码会有所帮助。

从我所看到的,新的结果是* QFile应该分配给另一个* QFile

QFile * filehandle;

*filehandle = new QFile(this)     //is wrong

filehandle = new QFile(this)      //is right

请记住,分段错误来自对未正确保留的内存的访问或早期使用delete语句进行的内存访问。

如果您在分段故障问题上遇到太多问题,可以通过调试器(gdb)快速了解问题所在。如果你使用QT Creator,这个过程非常简单。

答案 1 :(得分:0)

我在类中将 QFile 声明为私有变量时遇到了同样的错误。

QFile  archivo_pattern_bin;

然后使用它在指定的绝对路径中打开一个十六进制文件

archivo_pattern_bin.setFileName(pattern_file_path);
archivo_pattern_bin.open(QIODevice::ReadWrite);
archivo_pattern_bin.flush();

在 setFileName() 处调试时返回 windows 分段错误

但现在我只是声明一个指针

QFile * archivo_pattern_bin;

并动态创建 Qfile 对象

archivo_pattern_bin = new QFile(this);
archivo_pattern_bin->setFileName(pattern_file_path);
archivo_pattern_bin->open(QIODevice::ReadWrite);
archivo_pattern_bin->flush();

另外我写了一个超出其定义大小的数组,从而破坏了一切......

现在一切都好:D 谢谢巴勃罗