21.3 堆内存管理
堆内存在运行时动态分配,分配函数是malloc()和运算符new,相应的释放函数是free()和释放运算符是delete。因此堆内存的生存期由程序本身来控制,使用上很灵活,但问题也最多。
21.3.1 申请堆内存
堆内存可以有两种申请方式:分配函数malloc(),分配运算符new。
1.使用malloc()函数
malloc()函数的原型如下:
- void *malloc(int size);
该函数向系统申请size个字节的内存空间,返回类型是void型指针。在实际使用时,必须强制转换为需要的类型。
2.使用new运算符
new是一个运算符,它在编译时分配内存空间,形式如下:
- pointer=new type[n];
其中,pointer是type型指针,type[n]表示要分配n个type型的内存空间。如果分配只有一个type型内存空间,则不需要加"[n]"。
【示例21-8】 演示堆内存的分配方法。
- int *p1,*p2;
- p1=(int *)malloc(2*sizeof(int));
- P2=new int[2];
分析:该示例中用两种方法给指针p1和p2分配内存空间。两种方法效果是一样的,都是动态分配2个字节的空间。所不同的是,malloc()是一个函数,而new是一个运算符。
【责任编辑:
云霞 TEL:(010)68476606】