博客中介绍了malloc和free,malloc和free只是单纯的申请内存和释放内存,没有“对象”的概念,都需要我们自己手动转变他的类型,比如int* p = (int*)malloc(16);但在c++中,new和delete完全涵盖了malloc和free的功能,所以一般情况下都会使用new和delete,而不会再使用malloc和free。
使用方法
int main()
{
int* p = new int(123); //初始化
*p = 1; //给变量赋值
int* b = new int[100];//申明数组
for (int i=0;i<100;i++)
{
b[i] = i + 1;
}
for (int i = 0; i < 100; i++)
{
printf("%d", b[i]);
}
delete p;
delete[]b;
return 0;
}
从上面例子中可以看出:
如果new时有[],那么delete就必须也有[];
如果new时没有[],那么delete就没必要有[]。
注意事项:
一般这样使用
delete p;
p = NULL;
动态创建对象
new:动态创建一个对象
(1)申请一块内存;
(2)内部调用了构造函数。
delete:释放这个对象
(1)调用了析构函数;
(2)释放内存。