码迷,mamicode.com
首页 > 其他好文 > 详细

new/delete 和 malloc/free有什么区别和联系

时间:2014-07-29 18:28:42      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:style   使用   strong   ar   line   c++   new   size   

区别:

    1. new/delete是C++的操作符,malloc/free是C/C++标准库函数

    2. new分为两步的:第一步是申请内存,第二步则是调用构造函数初始化对象。同样,在调用delete的时候,需要先调用析构函数,然后再回收堆内存。malloc只会根据参数分配内存,默认返回指向void*的指针,同样free释放malloc分配的内存。

    3.malloc/free是new/delete的一个子集。

共同点:

    1. 都必须配对使用,这里的配对使用,可不能理解为一个new/malloc就对应一个delete/free,而是指在作用域内,new/malloc所申请的内存,必须被有效释放,否则将会导致内存泄露。

    2. 都是申请内存,释放内存。

示例:

//pM指针指向sizeof(int)*100大小的内存块
int* pM = (int *)malloc(sizeof(int)*100);
if (pM)
{
    free(pM);
    pM = NULL;
}

//pN创建100个int对象
int* pN = new int[100];
if (pN)
{
    delete []pN;
    pN = NULL;
}





new/delete 和 malloc/free有什么区别和联系,布布扣,bubuko.com

new/delete 和 malloc/free有什么区别和联系

标签:style   使用   strong   ar   line   c++   new   size   

原文地址:http://my.oschina.net/xlplbo/blog/295907

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!