malloc,free和new,delete区别:

 a.malloc,free是C/C++的标准库函数。new,delete是c++的操作符。

 b.malloc申请的是内存,严格意义不是“对象”,new申请的可以理解为“对象”,new 时会调用构造函数,返回指向该对象的指针。

 c.对于class类型,必须用new/delete来创建和销毁,自动调用构造和析构函数,malloc/free无法胜任。

使用new遵循原则:

 a.用new申请的内存,必须用delete释放。

 b.用new[]申请的内存,必须用delete[]释放。

 c.delete释放内存后,指针值不变,良好的风格是释放后指针置为NULL,如,delete p;p = NULL。

使用

1.申请一个对象

int* p1 = new int;delete p1;p1 = NULL;

2.申请多个对象

int* p1 = new int[12];delete[] p1;p1 = NULL;

3.申请一个长度为1024的char数组

char* pArray = new char[1024];for (int i=0; i 1024; i++){    pArray[i] = i;}delete[] pArray;pArray = NULL;

4.申请一个类对象

#include 

class Student{public:    char name[32];    int  age;};int main(){    Student* pStu = new Student();    delete pStu;    pStu = NULL;    return 1;}

5.申请1024个类对象

#include 

class Student{public:    int age;    Student()    {        ...    }    ~Student()    {        ...    }};

int main(){    Student* pStu = new Student[1024];    for (int i=0; i<1024; i++)    {        pStu[i].age = i+1;    }    delete[] pStu;    pStu = NULL;    return 1;}

new多个对象不能传参数,要求该类必须有默认构造函数。

===推荐阅读===

阿里巴巴 29 个屌炸天的开源项目

16个超级实用的Java工具类

[C++札记]内联函数

技术群:>>后台回复加群<<

喜欢就搓个"在看"

对于一个指针可以多次使用delete_【C++札记】new和delete相关推荐

  1. java定义一个指针类型变量赋值吗,C++中指针的数据类型和运算相关知识小结

    C++有关指针的数据类型和指针运算的小结 前面已用过一些指针运算(如p++,p+i等),现在把全部的指针运算列出如下. 1) 指针变量加/减 一个整数 例如:p++,p--,p+i,p-i,p+-i, ...

  2. 第二章 数组名是一个指针常量吗?

    数组名是一个指针常量这种观点来源于数组名在表达式计算中与指针的结果等效性.例如下面的代码: int a[10], *p = a, *q; q = a + 1; q = p + 1; 在效果上看,a + ...

  3. 如何识别一个指针式的时种的时间?

    如何识别一个指针式的时种的时间? https://www.cnblogs.com/zjutlitao/p/4187476.html 转载于:https://www.cnblogs.com/AlvinL ...

  4. 在删除一个指针之后,一定将该指针设置成空指针(即在delete *p之后一定要加上: p=NULL)...

    在删除一个指针之后,一定将该指针设置成空指针(即在delete *p之后一定要加上: p=NULL) 转载于:https://www.cnblogs.com/linjj/p/5115735.html

  5. 如何初始化局部变量c语言_【C语言更新】C语言中如何来定义一个指针,并且对其进行初始化...

    文/Edward上一节中,我们利用了一个小知识来介绍了一下指针,在上面这个例子中,小明和小丽手中的这个杯子就好比我们C语言中的变量,它确实是实实在在存放一些有具体意义的数据.这个杯套就类似于C语言中指 ...

  6. 判断一个指针有没有free_Free Code Camp的每个人现在都有一个档案袋

    判断一个指针有没有free by freeCodeCamp 通过freeCodeCamp Free Code Camp的每个人现在都有一个档案袋 (Everyone at Free Code Camp ...

  7. 【c语言】定义一个指针数组,指向5个不同的char型数组

    最近在准备复试的上机考试,顺便帮大一小孩做C语言作业. 其中有一道题目是将五个单词排序后输出 想到了利用<string.h>库函数中的strcmp,但是逐一比较只能找到最大值或最小值,没有 ...

  8. 初始化一个指针的方法

    方法1. //在用到指针的地方.cpp中 CInfo *pInfo; pInfo=CInfo::CreateInfo(); //info.h 中是类CInfo的定义 #ifndef INFO_H #d ...

  9. python实现链表的删除_删除链表中的元素,但是只能使用一个指针

    先用使用常规方法,两个指针: golang实现: type Node struct {value intnext *Node}type Link struct {head *Nodetail *Nod ...

最新文章

  1. 牛津大学入学面试就这?组队选个颜色?背后的逻辑水深得很
  2. Cloudify — Overview
  3. Redis入门教程(一)
  4. axure中的拐弯箭头_Axure教程:实现菜单下拉效果
  5. tp_link路由器 重新设置
  6. 134. Gas Station 加油站
  7. hiho1482出勤记录II(string类字符串中查找字符串,库函数的应用)
  8. RNN隐藏层的两种计算方法GRU和LSTM
  9. 硅谷对“元宇宙”一无所知
  10. spring定时任务执行两次的原因与解决方法
  11. 【CentOS】Tomcat的安装
  12. asp.net中的窗体身份验证(完整篇之三:用户登录页面)
  13. 大学数学学习参考书点评
  14. 山西计算机网络系统安装,山西初中信息技术考试系统操作手册-20210410201505.docx-原创力文档...
  15. 工具:BT Sync 同步文件
  16. xp计算机无法正常启动,修复XP系统无法正常启动进入不了计算机的解决办法
  17. ResNet论文笔记及Pytorch代码解析
  18. 什么是PCB抄板?主要抄板软件有哪些?
  19. python 输出秒 转成时分秒格式(1时40分21秒)
  20. Anaconda安装踩雷+解决Anaconda Navigator打不开

热门文章

  1. 51CTO寄来的奖品
  2. 余宏德:Sun所有的核心技术都是开放的
  3. 软件测试都有哪些证书,软件测试都有哪些证书呀?有用吗?
  4. dubbo是如何“插入”到spring框架中的
  5. 判断鼠标是否在元素上_是否清扫保洁、是否雾撒降尘?江城环卫车装上了北斗,动动鼠标就知道了...
  6. win10计算机从桌面消失了,Windows10家庭版程序窗口在桌面上消失了解决方法
  7. oracle基本的操作命令,oracle命令基本操作
  8. Ubuntu16.04 下 tensorRT安装
  9. php榛子云短信验证,java + maven +榛子云短信 实现发送短信验证码功能
  10. python 编码 解码 读写文件