为什么 main.cpp 中对象都是在栈上创建的?

DevExzh 2019-02-03 02:29:54
如题,本人在闲来无事研究 Qt 的时候发现一个困扰了很久的问题:Qt 自动生成的 main.cpp 中 QApplication 和 QMainWindow 都是创建在栈上的:

int main(int &argc,char **argv)
{
QApplication a(argc,argv);
QMainWindow w;
w.show();
return a.exec();
}

这其中有什么道理吗?为什么不把它创建在堆上?
...全文
441 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
大苟姬 2019-02-12
  • 打赏
  • 举报
回复
你用new也没关系的。
ForgetTomorrow 2019-02-12
  • 打赏
  • 举报
回复
你用new还得要delete多麻烦~
yiyefangzhou24 2019-02-07
  • 打赏
  • 举报
回复
函数的局部产量都是在栈上,全局产量在堆上,这是编译器决定的
ooolinux 2019-02-04
  • 打赏
  • 举报
回复
函数局部自动变量在栈上,静态和全局变量在全局内存区,new和malloc的在堆上。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧