
库函数之malloc与new
发布日期:2021-05-10 06:26:28
浏览次数:22
分类:原创文章
本文共 625 字,大约阅读时间需要 2 分钟。
malloc与new的区别
从本质上来说,malloc(上具体实现可以参考man malloc,glibc通过brk()&mmap()实现)是libc里面实现的一个函数,如果在source code中没有直接或者间接include过stdlib.h,那么gcc就会报出error:‘malloc’ was not declared in this scope。如果生成了目标文件(假定动态链接malloc),如果运行平台上没有libc(Linux平台,手动指定LD_LIBRARY_PATH到一个空目录即可),或者libc中没有malloc函数,那么会在运行时(Run-time)出错。new则不然,是c++的关键字,它本身不是函数。new不依赖于头文件,就可以把new编译成目标代码(g++4.6.3会向目标中插入_Znwm这个函数,另外,编译器还会根据参数的类型,插入相应的构造函数)。
在使用上,malloc 和 new 至少有两个不同: new 返回指定类型的,并且可以自动计算所需要大小。而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的。另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。除了分配及最后释放的方法不一样以外,通过malloc或new得到,在其它操作上保持一致。
malloc与free对应,new与delete对应。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月21日 20时46分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ionic4 路由跳转传值
2021-05-15
pwn题shellcode收集
2021-05-15
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
配置jdk的环境变量
2019-03-12
编译android源代码(aosp)
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12
维基百科之AndroidRoot
2019-03-12
C++ Primer Plus读书笔记:循环读取(错误处理)
2019-03-12
伴随矩阵和逆矩阵的关系证明
2019-03-12
Form窗体属性
2019-03-12
解决Eclipse加载图片或网页出现404错误
2019-03-12
vue 错误收集
2019-03-12
Java选择排序算法实现
2019-03-12
00010.02最基础客户信息管理软件(意义类的小项目,练习基础,不涉及数据库)
2019-03-12
00013.05 字符串比较
2019-03-12
LeetCode: 138. 复制带随机指针的链表(中等)[DFS, 迭代]
2019-03-12
Effective Java 读书笔记
2019-03-12
SpringBoot使用@Email报错误
2019-03-13