微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

堆分配的QApplication被删除

如何解决堆分配的QApplication被删除

在基本的C ++ Qt Widgets应用程序中,在堆栈上创建QApplication或直接在main函数中进行堆分配是可行的,但是调用函数在堆中分配{{1} },并使用返回的指针会产生分段错误

QApplication

我认为它正在被自动删除,但我不知道为什么。

解决方法

问题不在于您创建具有动态存储持续时间的QApplication,而是QApplication::QApplication(int &argc,char **argv)的构造函数是以QApplication为参考的Blocks with redundant space at the bottom

这两个注意事项/警告:

注意:随着Qt删除它可以识别的命令行参数,argcargc可能会更改。

警告:argvargc引用的数据在QApplication对象的整个生存期内必须保持有效。另外,argv必须大于零,argc必须至少包含一个有效字符串。

退出该函数后,对argvargc参数的引用将无效,这违反了该警告。

如果将create_application更改为QApplication* create_application(int argc,char* argv[]),它将起作用,因为QApplication* create_application(int &argc,char* argv[])现在引用argc的{​​{1}}参数,而不是它的副本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。