博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
new , delete常见用法和与malloc,free比较
阅读量:7026 次
发布时间:2019-06-28

本文共 1148 字,大约阅读时间需要 3 分钟。

new/delete是C++的运算符。malloc与free是C++/C语言的标准库函数,new/delete只能在C++中使用,malloc与free在C与C++中都能够使用,它们都可用于申请动态内存和释放内存。 下面说说它们的用法与不同之处: 1、new/delete new 类型  :  int *pi=new int;  //分配一个int大小的内存空间,并用指针pi指向该内存,返回值为int*;相当于int *p=(int*)malloc(sizeof(int));                         new 对应 delete 用法:delete pi;                         malloc 对应 free 用法:free(pi);
new 类型[]:   int *pi=new int[100];//分配100个int大小的内存空间,并用指针pi指向该内存,返回值为int*;相当于int *p=(int*)malloc(100*sizeof(int));                       new  对应 delete 用法 :delete []pi;
malloc 对应 free 用法: free(pi);
注意:在delete之后,重设指针的值。              执行完该语句后,p变成了不确定的指针,在很多机器上,尽管p值没有明确定义,但仍然存放了它之前所指对象的地址,             然后p所指向的内存已经被释放了,所以p不再有效。此时,该指针变成了悬垂指针(悬垂 指针指向曾经存放对象的内存,             但该对象已经不存在了)。悬垂指针往往导致程序错误,而且很难检测出来。一旦删除了指针所指的对象,立即将指针置             为0,这样就非常清楚的指明指针不再指向任何对象。(零值指针:int *ip=0;)   如:
1 int *pi=new int;2 if(!pi==NULL)3 {4       //分配失败5          //异常处理6 }7 delete  pi;8 pi=NULL;
 

    特别注意:new与delete搭配,malloc与free搭配,千万不要混用。

    拓展:realloc

    函数原型:void *realloc(void * p, unsigned int size);//   p指向原来分配的内存空间,size表示重新分配的内存空间大小。

           作用:对malloc申请的内存空间进行重新分配,通常是为了改变原来申请的内存空间大小。

           

 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/LizG192/p/5339387.html

你可能感兴趣的文章
nginx重写链接
查看>>
node的fs模块
查看>>
wordpress和传统网站的加载性能优化
查看>>
wordpress主机选择并不难,符合这五条的都是好主机!
查看>>
javaweb中的三个域
查看>>
double free or corruption (!prev): 0x080644c8 ***
查看>>
集训第五周动态规划 H题 回文串统计
查看>>
约瑟夫问题
查看>>
CM android的CMUpdater分析(一)
查看>>
2017python学习的第八天,socket的使用
查看>>
条件编译
查看>>
类百度DOC编辑区域
查看>>
[转载]Linux下终端字体颜色设置方法
查看>>
【BZOJ】4565: [Haoi2016]字符合并
查看>>
用C#的Windows Service 来同步ActiveDirectory
查看>>
GLUT Trackball Demo
查看>>
golang: impressed by its cross compiling possibilities
查看>>
QQ在线交谈一句代码搞定
查看>>
编辑拓展 对空物体进行面板上的编辑 窗口 Slider Tag 文本 枚举
查看>>
pip install selenium==版本号 报错
查看>>