1.概念

new   //typeName * pointer_name = new typeName;

delete //delete pointer_name;

注意:

(1)new之后要判断,指针是否为NULL,内存被耗尽时,防止程序超界、

(2)如果用变量分配的内存,则不能使用delete

int a = 5;

int * p = &a;

delete p;   //ERROR!!

(3)尽量不要创建两个指针指向同一内存块,可能对此内存块删除两次。

但对于返回指针的函数,使用是有道理的。(道理在哪??)

2.动态数组

(1) 静态联编:通过声明来创建数组--编译时为其分配内存空间,编写程序时,确定数组长度;

动态联编:通过new分配空间--运行时确定数组的长度

(2)  int * pt = new int[10];

pt[0] = 1;  //可以使用数组的方式赋值

pt[1] = 2;

pt[3] = 3;

pt = pt +1;   //此时pt[0] = 2;   pt[1] = 3;

//相邻的int地址相差2个或者4个字节,但将pt +1 后指向的是下一个元素的地址

pt = pt -1;   //指针变量指向原来的值,给后面的delete [] 提供正确的地址

delete [] pt;  //delete 注意:a.与new或new [] 配对使用

b.不能使用delete释放同一块内存两次,造成不确定

c.对空指针使用delete安全,但作用是??(不理解)

d.使用new[]为一个实体分配内存,则应使用delete(没有括号来释放)。

(书上看到的,不理解实体分配是什么情况?为什么没有括号?)

C++(1) 指针 new 和delete相关推荐

  1. ##关于用vector存取指针及相关delete问题(用序偶对解决0-1背包)

    仅以此篇博客来纪念本菜鸟的一次"成长" 关于用vector存取指针及相关delete问题(用序偶对解决0-1背包) 我在选用序偶对解决0-1背包时,选取的结构是vector,用ve ...

  2. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  3. 4.如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉

    容器很聪明,能够做很多事情.容器析构时,会调用元素的析构函数.但是,如果是元素为指针,会出现内存泄漏. ... std::vector<Widget*> datas; for (int i ...

  4. c++重载运算符_C/C++编程笔记:运算符重载丨重载C++中的New和Delete运算符

    new和delete运算符也可以像C ++中的其他运算符一样重载.New和Delete运算符可以全局重载,也可以在特定类中重载. (1)如果使用某个类的成员函数来重载这些运算符,则意味着这些运算符仅针 ...

  5. 常引用、常量指针、指针常量、指向常量的常指针、空指针与野指针解释

    1.一.基础知识 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; //错误:引用类型的初始值必须是 ...

  6. 关于c++类中的指针成员问题

    C++类中指针成员的管理: 有三种解决方案: 1.全部用值类型指针: 优点:可以很安全而且简单. 缺点:占用大量的内存,并且内存CPY运算量巨大. 方法:写如下几个函数: 复制构造函数. 析构函数. ...

  7. C++中智能指针的设计和使用

    智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露.它的一种通用实现技术是使用引用计数(reference ...

  8. C++智能指针(设计和使用)

    前段时间学习project Anarchy引擎,底层很多都是用的只能指针,学了之后一直没用过的,到现在终于算是见到实际作用了,现在重新温故下 智能指针(smart pointer)是存储指向动态分配( ...

  9. C++ new delete操作符

    //new delete操作符 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;/* 1.ne ...

最新文章

  1. Python案例:使用BeautifuSoup4的爬虫
  2. 微软职位内部推荐-Senior SDE for Cloud Platform
  3. mysql更新日志问题
  4. 10 个小技巧:快速用 Python 进行数据分析
  5. 阿里云朱照远:AI打开新视界 8K时代已来!
  6. Dockerfile 指令详解2
  7. 64位Outlook 无法与OC集成
  8. C# 图片画矩形,添加文字
  9. Spring Data JPA 从入门到精通~如何配置多数据源
  10. 中蜂几月份自然分蜂_蜜蜂的种类:北黑蜂,中华蜜蜂,皖南中蜂,贵州纳雍中蜂等等...
  11. c语言深度解剖 pdf,c语言深度解剖(解密).pdf.pdf
  12. C++STL之整理算法
  13. Ubuntu18.04下的模拟神器RetroArch
  14. 分享软件测试计划模板
  15. 语音通知事件提醒功能实现流程
  16. centos7 安装pg_repack
  17. (转)Linux——pv、vg和lv的概念
  18. 关于Wasserstein GAN的理解
  19. 基于Yocto的qmake编译环境默认QMAKE_SPEC不是linux-oe-g++的问题
  20. 互联网大厂技术岗实习/求职经验分享(实习内推+简历+面试+offer)

热门文章

  1. 计算机网络技术超文本,网络协议确定了计算机网络传递和管理信息的规范,其中HTTP属于()A、超文本传输协议B、传输控制协...
  2. Linux结构体变量报错,23. Linux模式设计
  3. filter执行先后问题_filter的执行顺序是怎样的?
  4. 用博奥如何导入单项工程电子表_博奥工程系列软件实操手册(第六册).doc
  5. qemu 安装windows_BIOS+MBR启动引导安装双系统
  6. 是不是一个东西_迷你世界:一个金币就能买到稀有武器?这么良心的售货机在哪领...
  7. job sql 定时执行exe_SQL Server定时作业job的设置方法(转)
  8. enspac启动失败代码2_电脑蓝屏代码0x000024
  9. 怎么增加android模拟器内存卡,增加android模拟器的内存大小
  10. mchain r语言_【揭秘】Mchain是长久稳定的项目吗?是不是骗钱的平台?做的人有多少?...