c++中定义变量放在主函数内外的区别

区别一:变量定义在主函数外面,系统运行时会将变量初始化为0,但是定义在主函数内就不是了

区别二:在主函数外面开设一个数组,它的内存分配在数据区里;而如果在主函数内部开设一个数组,它的内存分配在栈区内。一般来说栈区的内存是比较小的,所以平常开一些小一点的数组或者变量是完全没问题的;但如果题目要求的数组或变量比较大,那就会出现爆满溢出的情况,程序将无法访问内存而出错;相反,数据区的内存较大,就不会出现这样的问题。

栈区:由操作系统自动分配释放,存放函数的参数值,局部变量的值,不需要时系统会自动清除,内存较小
堆区:由new分配的内存块,也就是说在代码中new一个数组,内存由堆区分配;堆区不由编译器管,由应用程序控制,相当于程序员控制。如果程序员没有释放掉,程序结束后,操作系统会自动回收
数据区:也称全局区或者静态区,存放全局的东西,比如全局变量,内存较大
代码区:存放执行代码的地方

你可能感兴趣的:(C++,c++)