• 5474阅读
  • 3回复

很简短的代码, 程序异常退出. [复制链接]

上一主题 下一主题
离线jorneyr
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-27
hash = new QHash<QString, QString>();

然后只要调用下面的这段代码, 程序马上异常退出.
const QString & getDatabasePath() const {
    return hash->value("Database_Path");
}

哪位能解释一下吗?
离线dbzhang800

只看该作者 1楼 发表于: 2009-07-28
引用楼主jorneyr于2009-07-27 23:03发表的 很简短的代码, 程序异常退出. :
hash = new QHash<QString, QString>();
然后只要调用下面的这段代码, 程序马上异常退出.
const QString & getDatabasePath() const {
    return hash->value("Database_Path");
.......


把 & 去掉呢?
离线jorneyr

只看该作者 2楼 发表于: 2009-07-28
去掉&是没有问题的.
注意了一下, 在Qt库中, 很少有返回const T &这种样子.
离线shiroki

只看该作者 3楼 发表于: 2009-07-28
这个函数的名字很说明问题, 既然叫value说明它只保证值是对的,并不保证返回的地址持续有效,你用&和指针是类似的, 得到的是个地址,如果指向的变量被释放了就自然出错了
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
快速回复
限100 字节
 
上一个 下一个