操作符new 和函数malloc()的异同及其用法

17 篇文章 0 订阅

操作符new 和函数malloc()的异同:

1,在内存管理上,C++ 和 C 有着完全不同的两套方案。当然,C++的总是同时兼容 C。C 的那一套方案在 C++
里同样可行

2,new 是 c++ 的一个关键字。被当作像+、-、* 、/ 一样的操作符。它的操作结果是在申请到一段指定数据类型大小的内存。 

3,new/delete 只在 C++里得到支持。在 C 里,内存管理是通过专门的函数来实现。

4,使用 new 得来的空间  , 必须用 delete 来释放 ;使用 new [] 得来的空间 ,必须用 delete [] 来释放。 彼此之间不能混用。new/delete、new[]/delete[]、malloc/free 三对均需配套使用,不可混用!




用法:

 new [] 和 delete []
new / delete 用于分配和释放单个变量的空间,而 new [] / delete[] 则用于分配连续多个变量的存间。 
20.3.1 new[] / delete[]  20.3.1 new[] / delete[] 用法 new []  new [] 语法 



一个指针被删除时 一个指针被删除时, 应指向最初的地址

但当我们的指针指向变化很多次时,在释放前要保证一步不错地一一退回,会比较困难。所以另一方法是
在最初时“备份”一份。在释放时,直接释放该指针即可。 
int* p = new int[3]; 
int* pbak = *p; int* pbak = *p;      // // // //备份 备

 20.4.2 已释放的空间 已释放的空间, ,, ,不可重复释放 不可重复释放


 malloc()   realloc()  free()

realloc  realloc 并不保证调整后的内存空间和原来的内存空间保持同一内存地址 并不保证调整后的内存空间和原来的内存空间保持同一内存地址。 。。 。相反 相反, ,, ,realloc  realloc  realloc 返回的指针很 返回的指针很
可能指向一个新的地址。 。。 。 
所以,在代码中,我们必须将 realloc 返回的值,重新赋值给p : 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值