C++和C语言的内存管理

在C语言中学到了四个动态内存管理和函数,分别为malloc、calloc、realloc和free

函数原型为void* malloc(size_t  _size);

                         void free( void *memblock );

                        void *calloc( size_t num, size_t size );

                        void *realloc( void *memblock, size_t size );

1)malloc分配一块连续的内存空间,malloc返回的指针要进行检查,malloc需要手动计算类型的大小,malloc实际分配的内存可能比申请的空间要大一些

2)calloc也是分配一块连续的内存空间,但是calloc申请的空间全部被初始化为0

3)realloc用于调整一个原先已分配的内存空间的大小,返回的可能是新的地址,也可能是原先的内存空间的地址

4)free用来释放已申请的内存空间

在C++中动态开辟和释放空间采用的是new和delete操作符

new/delete 用于动态管理单个对象

new[]/delete[]用于动态管理对象数组

都是在堆上开辟空间

C++中还有几个标准库函数

如:void* operator new(size_t size)     这个函数不是new操作符的重载

在使用new操作符时,会先调用operator new()函数,而在此函数内部实质也是使用malloc来开辟空间


malloc/free和new/delete的区别和联系

1)它们都是动态管理内存的入口

2)malloc和free时C/C++标准库的函数,而new/delete是C++的操作符

3)malloc/free只是动态分配内存/释放空间,而new/delete除分配内存空间外还调用构造函数和析构函数进行初始化和清理工作

4)malloc/free需要手动计算类型的大小且返回值类型为void*,new/delete可自己计算类型的大小,返回值为对应类型的指针

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值