malloc函数详解以及和new的区别

本文详细探讨了C++中malloc和new的区别,包括malloc作为动态内存分配函数,new作为运算符的特性。malloc函数需要手动指定内存大小并返回void指针,而new不仅分配内存,还能初始化对象。两者都在堆上分配内存,但new提供了类型安全和对象初始化功能。文章强调了使用malloc和new后释放内存的重要性,以及避免悬挂指针的必要性。
摘要由CSDN通过智能技术生成

今天偶然看到一个面试经验中提到malloc和new的区别,突然发现自己虽然两个都用过,但是至于区别,真的不是很明白 ,所以就仔细查了一些资料,算是对这个点彻底地了解一下,现在把我所学到的记录下来。

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。

1.malloc函数初探

首先我们要知道malloc是一个函数,malloc的全称是memory allocation,中文叫动态内存分配。它的原型是:

void *malloc(int size);

说明:malloc 向系统申请分配指定size个字节的内存空间,返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。   
在这里注意:
(1) void* 表示未确定类型的指针,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据(比如是char还是int或者…)
(2) 使用malloc向系统申请内存时可能分配失败。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,有很多种,比如说空间不足就是一种。
一个对应的释放内存的函数:

void free(void *FirstByte);

该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。
至于用法,其实这两个函数用起来倒不是很难,也就是malloc()之后觉得不用了需要释放把它给free()了,举个简单例子:

char *Ptr = NULL; 
Ptr = (char *)malloc(100 * sizeof(char)); 
if (NULL == Ptr){ 
     
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值