(一)new运算符

(1)new运算符使用的一般格式:

new 类型 [初值];

用new分配空间时不指定初值。如果由于内存不足等原因而无法正常分配空间,那么new会返回一个空指针NULL,用户可以更具该指针的值判断分配空间是否成功。

例如:
new int;//开辟一个存放整形的存储空间,返回一个指向该存储空间的地址(指针)。

new int (100);//开辟一个存放整形的空间,并指定该整数的初值为100。

new *c=new char [10];//开辟一个存放字符数组的空间,返回首地址。

float *p=new float (1.14159);

//开辟一个存放单精度数的空间,并指定该实数值为3.14159,将返回该空间的地址赋给指针变量p


(2)用new动态建立一个对象:

new Worker;

编译系统开辟了一段内存空间,并在此内存空间存放了一个Worker类对象。但此时用户还无法访问这个对象,因为这个对象既没有对象名,用户也不知道它的地址,这种对象称为无名对象。它确实存在,但没有名字。

用new运算符动态分配内存后,将返回一个指向新对象的指针值,即所分配的内存空间的起始地址。用户可以获得这个地址,并通过这个地址来访问这个对象。需要定义一个指向本类的对象的指针变量来存放该地址。

Worker *pt;//定义一个指向Worker类对象的指针pt

pt=new Worker;//在pt中存放新对象的起始地址

(3)C++还允许在执行new时,对新建对象进行初始化。例如:

Student *pt=new Student (1,"zhangsan',4000);

在执行new运算符时,如果内存量不足,无法开辟所需的内存空间,目前大多数C++编译系统都会使用new返回一个0指针。只要检测返回值是否为0,就可以判断分配内存是否成功。

(二)delete运算符

delete运算符的一般形式

delete [ ] 指针变量;

例如要撤销上面用new开辟的存放单精度数的空间,方法如下:

delete p;

要撤销上面用new开辟的存放字符数组的空间,方法如下:

delete [ ] c;

要撤销上面用new开辟的对象空间,方法如下:

delete pt;


new与delete动态分配和释放内存j举例

#include<iostream>
using namespace std;
//1.new的基本用法
int *func()
{//在堆区创建建整形数据//new 返回的是 该数据类型的指针int *p=new int (10);return p; } void test01(){int *p=func();cout<<*p<<endl;//堆区的数据 由程序员管理开辟 程序员管理释放//如果想释放堆区的数据,利用关键字deletedelete p;//cout<<*p<<endl;   //注意:会报错,因为内存已经被释放,再次访问就是非法操作,会报错 }void test02(){//在堆区创建10个整形数据的数组 int *arr=new int[10];//10代表数组有10个元素 for(int i=0;i<10;i++){arr[i]=i+100;//给10个数赋值100~109 } for(int i=0;i<10;i++){cout<<arr[i]<<endl; } //释放堆区数组delete []arr; }
int main()
{test01();test02();return 0;} 

new与delete动态分配和释放内存相关推荐

  1. c与c++分别是怎样动态分配和释放内存的,有什么区别?(转)

    查了查资料,总结了以下几点: 一.先来谈谈在C语言下,动态内存分配和释放的特点. 动态分配内存的定义是这样的,指在程序运行过程中,要申请内存,系统会根据程序的实际情况来分配,分配空间的大小是由程序的需 ...

  2. php的内存划分,解析PHP中的内存管理,PHP动态分配和释放内存

    摘要 内存管理对于长期运行的程序,例如服务器守护程序,是相当重要的影响:因此,理解PHP是如何分配与释放内存的对于创建这类程序极为重要.本文将重点探讨PHP的内存管理问题. 一. 内存 在PHP中,填 ...

  3. C++ new和delete(C++动态分配和释放内存)

    当我们需要为类对象动态分配存储空间时,我们应该使用 C++语言提供的 new 与 new[] 操作符,而不要使用 C语言提供的 malloc() 函数. 虽然 malloc() 函数具有分配存储空间的 ...

  4. C++ 之new和delete释放内存

    C++ -释放内存(new和delete) C++动态分配和释放内存 @c.biancheng.net/view/206.html 在C语言中,动态分配内存用 malloc() 函数,释放内存用 fr ...

  5. 内存动态分配与释放,malloc和new区别

    1.   C语言的函数malloc和free (1) 函数malloc和free在头文件<stdlib.h>中的原型及参数 void * malloc(size_t size) 动态配置内 ...

  6. C语言内存动态分配与释放

    一.内存分配 对于内存的分配,主要采用的是标记法. 分配方法有两种,一种是静态分配,也就是在程序编译的时候,就完成了对内存的分配.例如当一个数组在声明时,指定长度之后,它所需要的内存在编译时就会被分配 ...

  7. 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?...

    五条基本规则: 1.如果基类已经插入了vptr, 则派生类将继承和重用该vptr.vptr(一般在对象内存模型的顶部)必须随着对象类型的变化而不断地改变它的指向,以保证其值和当前对象的实际类型是一致的 ...

  8. C++ 动态内存管理:c/c++的动态内存管理,new/delete,operator new/delete,placement-new, 内存泄漏

    c/c++的动态内存管理 new/delete opeartor new/delete placement-new 内存泄漏 c/c++的动态内存管理 在开始之前首先要了解c和c++的内存分布,我简单 ...

  9. C/C++申请和释放内存

    new 和 delete 是 C++ 用于管理堆内存的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符.除此之外 ...

  10. 利用二叉树的思想来实现分配和释放内存方法

    虽然大部分系统都有提供内存动态分配和释放函数(即C语言中的malloc和free函数),但是在嵌入式开发中由于系统的限制往往需要自己来实现内存管理,如在有些平台上可动态申请的最大空间不能满足程序设计的 ...

最新文章

  1. 《Python编程从入门到实践》学习笔记3:列表
  2. Oracle访问远程服务器的数据库
  3. 【Xamarin开发 Android 系列 4】 Android 基础知识
  4. 六十四、SpringBoot中的模板引擎Thymeleaf
  5. 【原创】【狗眼看股】【2008-4-25】干扰了节奏,改变不了趋势
  6. Mac终端shell类型bash和zsh切换
  7. VMware安装Centos7详细过程
  8. Expression Blend 利用 SketchFlow 制作原型
  9. SQL Server DATEDIFF() 函数
  10. 美团智能配送系统的运筹优化实战
  11. RecSys'22|CARCA:交叉注意力感知上下文和属性进行推荐
  12. Lae程序员小漫画(1),仅供一乐
  13. 无论你处于Java学习的哪个阶段,这些都适合你
  14. phpExcel导出excel文件浏览器一直不会出现下载框
  15. 设置首字母大写(js)
  16. 3D打印技术之切片引擎(7)
  17. 高性能MySQL -- 查询性能优化
  18. zoom html css3,csszoom css zoom标签移动端可以用吗
  19. adb 前摄像头 调用_android: 调用摄像头拍照
  20. 第十一次作业 - Alpha 事后诸葛亮

热门文章

  1. intel 显卡 opencl安装
  2. 关于受理南山区2022年度“领航人才” 租房补贴申请的通告
  3. 计算机高级筛选在哪找,excel表格数据高级筛选在哪里-EXCEL高级筛选
  4. 美团网副总裁王慧文:所谓“农村包围城市”是一个误解
  5. java虚拟机假死怎么办_虚拟机假死解决方法
  6. RSA详解 ----- Android中常用的非对称加密算法
  7. 腾达无线路由器怎么建立服务器,如何在腾达建立无线路由器 | 192.168.1.1手机登陆...
  8. DQN-FlappyBird项目学习
  9. 内功修炼之lodash——chunk、zip、groupBy、invokeMap方法
  10. linux 网络配置 nm_controlled,LINUX centos7.6修改静态IP与配置参数NM_CONTROLLED