c++的内存分配

  c++的三种内存分配方式:

  1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量就是这种分配方式。

  2.在栈上创建的内存。在执行函数内部局部变量的存储单元在栈上创建,函数执行结束时伴随着局部变量生命周期的结束,这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

  3.堆上分配内存,也就是动态内存分配。用new或者malloc申请之后应该立马给指针赋初值,防止将未被初始化的内存作为右值使用;避免数组或指针的下标越界,特别要当心发生“++”或者“--”操作;动态内存的申请与释放必须配对,防止内存泄漏;用free或delete释放了内存之后,立即将指针设置为NULL,防止产生“野指针”。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活。(int *pArray;   int MyArray[6];    pArray = &MyArray[0];)如果在申请动态内存时找不到足够大的内存块,malloc和new将返回NULL指针,判断指针是否为NULL,如果是则马上用return语句终止本函数,或者马上用exit(1)终止整个程序的运行,为new和malloc设置异常处理函数。

posted @ 2015-07-10 15:34  柳安花明  阅读(168)  评论(0编辑  收藏  举报