C++内存分配的方式

来源:互联网 发布:java开发需要掌握技术 编辑:程序博客网 时间:2024/06/04 08:51

前几天在线笔试的时候最后一道题就是问这个,但是自己只答了栈和堆,查了资料来补充说明:

   C++内存分配的方式有3种:

       1.从静态存储区分配,程序在编译的时候就已经分配好了,并且在整个运行期间都存在,比如静态变量和全局变量。

          ps:实际上静态变量和全局变量你如果不初始化,系统会自动帮你初始化为0。

       2.在栈上创建,函数参数和内部的非静态局部变量(包括数组),以及一些函数返回值;其开辟和释放都是由操作

          系统帮我们完成,在VS下我们可以在项目》属性》链接器》系统》堆栈保留大小中设置,单位是 字节

       3.在堆上分配,也称为动态内存分配。在程序运行时用malloc和new分配,必须有我们手动用free和delete回收,

          否则就会出现内存泄漏!避免内存泄漏的方式就是用RAII机制,可以将其封装为一个类,在对象出了作用域时就会

          调用析构函数并释放内存;在堆上分配的内存方便我们灵活的运用内存,但是也极易出现内存泄漏等恶劣影响,所

          以我们要谨慎使用它。

                                                                                                                                     ----------------参考《高质量的C C++编程》7.1节