如何解决堆分配的QApplication被删除
在基本的C ++ Qt Widgets应用程序中,在堆栈上创建QApplication
或直接在main
函数中进行堆分配是可行的,但是调用函数在堆中分配{{1} },并使用返回的指针会产生分段错误:
QApplication
解决方法
问题不在于您创建具有动态存储持续时间的QApplication
,而是QApplication::QApplication(int &argc,char **argv)
的构造函数是以QApplication
为参考的。
这两个注意事项/警告:
注意:随着Qt删除它可以识别的命令行参数,
argc
和argc
可能会更改。
警告:由
argv
和argc
引用的数据在QApplication对象的整个生存期内必须保持有效。另外,argv
必须大于零,argc
必须至少包含一个有效字符串。
退出该函数后,对argv
中argc
参数的引用将无效,这违反了该警告。
如果将create_application
更改为QApplication* create_application(int argc,char* argv[])
,它将起作用,因为QApplication* create_application(int &argc,char* argv[])
现在引用argc
的{{1}}参数,而不是它的副本
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。