首页 > 代码库 > new/delete 和 malloc/free有什么区别和联系
new/delete 和 malloc/free有什么区别和联系
区别:
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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。