在C语言中,我们熟悉的内存分配与释放的最常用的接口分别是malloc , free 。在C++中:
存在着更加方便的动态存储分配:
1、new 和delete 机制,new 它能更可靠控制存储区的分配,C++ 用delete 释放new 运算符申请的存储区。
2、new 分配空间时, 如果是对象, 自动调用构造函数。
3、new [] 表示分配一个动态数组, 要跟delete [] 配合使用。
直接上代码:
#include <iostream> using namespace std ; int main(void) { //给指针变量a分配int类型大小的空间 int *a = new int ; //给指针变量赋予200 *a = 200 ; //new [] 表示分配一个动态数组 int *p = new int[10] ; //注意,这里不只10块空间,而是4*10=40 。因为int型占4个字节 int i ; //遍历数组 for(i = 0 ; i < 10 ; i++) { p[i] = i ; //给数组赋值 cout << "p[" << i << "] : " << p[i] << endl ; } cout << "*a : " << *a << endl ; //释放空间 相当于C语言中的free delete a ; //Ê释放空间 delete [] p ; char *q = NULL ; delete q ; return 0 ; }
运行结果:
p[0] : 0
p[1] : 1
p[2] : 2
p[3] : 3
p[4] : 4
p[5] : 5
p[6] : 6
p[7] : 7
p[8]
: 8
p[9]
: 9
*a
:200