C++栈溢出的解决方法总结

您所在的位置:网站首页 栈内存溢出怎么解决 C++栈溢出的解决方法总结

C++栈溢出的解决方法总结

2024-07-11 07:00| 来源: 网络整理| 查看: 265

前言

很多C++入门者不太注重C++语言的内存管理机制,这样开发的软件会有持续运行过程中崩溃的危险,因此在学习过程中要特别注意内存大的管理。本篇博客对C++栈内存做梳理,在写C++的过程中便可以注重规范。

局部变量属于栈内存!全局变量和statis变量位于全局区,程序结束后由系统释放! (不会栈溢出)

因此,防止栈溢出,要减少局部变量!

即函数体和main函数内的变量不能多!(栈内存只有几M) 一个int型局部变量占4个字节 一个double型局部变量占8个字节 1M=1048576个字节,最多 可定义 262144个int型局部变量 可定义 131072个double型局部变量

指针无论什么类型,在32位操作系统下占4个字节,在64位操作系统下占8个字节

栈溢出(stack overflow)的情况:

double numA[1000][1000];

1000*1000=1000000个double型变量 这样局部变量占用的内存过大,会超出栈内存范围!

解决方法:将数组改成STL的vector

若一个函数有很多局部变量,栈内存会一直占用,但是当一个函数return时,会释放掉栈内存!

解决方法:为了防止栈溢出,可以将一个多局部变量的函数拆分为多个,用指针和STL来替代数据量大的变量



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3