堆和栈的区别思考

堆:是new申请的,手动申请与释放,申请大小不受限制(只在内存够),

栈:系统自动申请与回收,不需要手动释放,但申请大小有限(在Win平台申请为1M, Mac平台为8M)

用Qt测试

在Qt的项目代码中,

在Qt的对话框中加入这段代码,然后调用显示对话框

char charStack[1024 * 1024];  在Win平台上用QtCreator编译,会崩溃,提示栈溢出

在mac 平台

char charStack[1024 * 1024 * 8]; 用Qt Creator编译,会崩溃,也是栈溢出

以前写代码都是new一个对象,这样方便重复使用。

其实还有一个重要的原因是栈申请的空间有限,如果数据量大会引起栈溢出,申请失败就崩澡了

原文地址:https://www.cnblogs.com/Vancamel/p/11316312.html