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设置异常处理函数。