C/C++内存管理

本文探讨了C/C++的内存管理,包括C语言中的malloc/realloc/calloc的区别,C++中的new/delete操作符,以及它们与malloc/free的对比。讨论了如何设计只能在堆或栈上创建对象的类,并介绍了内存泄漏的概念、分类及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 C/C++内存分布

注意一些变量的分布,const,static,register等都是需要注意的地方。 

C语言中动态内存管理方式

 malloc/realloc/calloc的区别?

  • 首先从函数参数上进行介绍,void * malloc(int n);void *calloc(int n,int size);void * realloc(void * p,int n);realooc是对内存的重新分配。
  • 其次malloc,realloc需要手动初始化,而calloc则自动初始化。单独使用均需要free释放掉,
  • 相同点
    1.都是从堆上申请空间
    2.都需要对返回值判空
    3.都需要用户free释放
    4.返回值类型相同(void*)
    5.都需要类型转化
    6.底层实现上是一样的,都需要开辟多余的空间,用来维护申请的空间
  • 不同点:
    1.函数名字不同和参数类型不同。
    2.calloc会对申请空间初始化,并且初始化为0,而其他两个不会。
    3.malloc申请的空间必须使用memset初始化
    4.realloc是对已经存在的空间进行调整,当第一个参数传入NULL的时候和malloc一样。
  • 注意有时calloc和
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值