在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