分段故障?我究竟做错了什么?

时间:2015-12-06 22:40:53

标签: c++ qt segmentation-fault

我是C ++的新手,所以我遇到了一些麻烦。我正在开展一个用Qt提高技能的项目。我遇到了一个问题:

1. filename = event->mimeData()->urls().at(0).toLocalFile();
2. filename = QFileDialog::getOpenFileName(this,tr("Load Image"), "C:/", tr("Image Files (*.png)"));
3. filename = QString(event->mimeData()->urls().at(0).toLocalFile());

filename是在我的类的头文件中声明的类型QString(不是指针或引用)的类成员。

所有三个例子都在编译,但是1.给我一个分段错误,而2.和3.不是。有人可以向我解释一下吗?特别是为什么2.和1.最终有两个不同的结局。

到目前为止,我的理解是toLocalFile()返回一个QString,它不是引用也不是指针。 filename使用=运算符来分配此字符串并返回引用。我想:"可能没有复制QString对象,因此引用了一个将被块末端破坏的变量 - >坏",所以我使用QString的Copy构造函数来制作副本。它奏效了。但是getOpenFileName()做了完全相同的事情,它返回一个QString等。不知怎的,它不会爆炸。 只是你能更好地理解我的问题和想法。

谢谢;)

0 个答案:

没有答案