new delete和malloc free的区别

简介: 一个对象我们可以建立在栈上也可以建立在堆上,但是在C语言里与C++里他们的实现还不同,本文将详细介绍new delete和malloc free之间的区别。

1.new只需要一个类型即可自动计算要分配的空间大小,而malloc则需要手动计算其大小


2.new是类型安全的,malloc不是类型安全的

例如:

image.png


3.new返回的是指定类型的指针,malloc返回的是void*指针,需要强制类型转换为相应的指针


4.new分配内存失败会抛出badalloc异常,malloc分配内存失败会返回nullptr


5.new在调用的时候会先开辟一块内存空间,然后调用构造函数,最后返回对应类型的指针,malloc只进行内存开辟然后返回void*指针;delete调用的时候先调用析构函数,然后释放指针所管理的资源,free只释放资源。


相关文章
|
22天前
|
存储 C语言
malloc
【6月更文挑战第16天】
33 8
|
1月前
|
存储 C语言
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
C语言学习记录——动态内存函数介绍(malloc、free、calloc、realloc)
25 1
|
14天前
|
C语言
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
【C语言】:动态内存管理函数malloc,calloc,realloc和free的介绍的介绍
20 0
|
10天前
|
程序员 C语言
C语言内存管理:malloc、calloc、realloc与free函数详解
C语言内存管理:malloc、calloc、realloc与free函数详解
8 0
|
19天前
|
缓存 C语言
glibc函数malloc的工作原理
glibc函数malloc的工作原理
14 0
|
13天前
|
C语言
【C语言基础篇】字符串处理函数(四)strcmp的介绍及模拟实现
【C语言基础篇】字符串处理函数(四)strcmp的介绍及模拟实现
|
12天前
|
C语言
C语言prinf函数
C语言prinf函数
12 4
|
10天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
|
12天前
|
编译器 程序员 Serverless
函数(C语言)
函数(C语言)
|
12天前
|
机器学习/深度学习 C语言
详细解读C语言math.h中常用函数
详细解读C语言math.h中常用函数
10 1