动态内存分配[1]

动态申请内存操作符 new

new 类型名T(初始化参数列表)

  • 功能:

在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值。

  • 结果值:

成功:T类型的指针,指向新分配的内存;失败:抛出异常(异常在十二章讲解)。

释放内存操作符delete

delete 指针p

  • 功能:释放指针p所指向的内存。p必须是new操作的返回值。

例6-16 动态创建对象举例

#include <iostream>
using namespace std;
class Point {public:
Point() : x(0), y(0) {cout<<"Default Constructor called."<<endl;
}
Point(int x, int y) : x(x), y(y) {cout<< "Constructor called."<<endl;
}
~Point() { cout<<"Destructor called."<<endl; }
int getX() const { return x; }
int getY() const { return y; }
void move(int newX, int newY) {x = newX;
y = newY;
}
private:
int x, y;
};
int main() {cout << "Step one: " << endl;
Point *ptr1 = new Point; //调用默认构造函数
delete ptr1; //删除对象,自动调用析构函数
cout << "Step two: " << endl;
ptr1 = new Point(1,2);
delete ptr1;
return 0;
}

主要:new和delete 一定要配合使用

删除(delete)是删除这个指针所指向的对象,释放它的空间。绝对不是删除指针自己。
比如此例中:这个指针变量它还在,在第二步后ptr1它可以接收别的赋值。
所以不是删除指针自己,这个指针是主函数的一个局部变量,当主函数运行结束时,这个指针自己的空间也会被释放。

参考

  1. ^http://www.xuetangx.com/courses/course-v1:TsinghuaX+00740043X_2015_T2+sp/courseware/d4eb7d174ba04a4da6282bcae197892c/3ddce3f3dcb74818b6460b6d94795bad/

释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)相关推荐

  1. c语言静态存储和动态存储,C语言中的静态内存与动态内存

    我们知道,内存分为动态内存和静态内存,我们先讲静态内存. 一.静态内存 内存管理---存储模型 存储模型决定了一个变量的内存分配方式和访问特性,在C语言中主要有三个维度来决定:1.存储时期 2.作用域 ...

  2. 【C 语言】内存管理 ( 动态内存分配 | 栈 | 堆 | 静态存储区 | 内存布局 | 野指针 )

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  3. 静态内存、动态内存与堆栈

    一.何谓静态内存.动态内存 静态内存分配好后,程序运行过程中一直存在不会被释放,且一旦分配好,其内存大小就固定下来不能改变,在编译和链接的阶段就会分配好. 动态内存是程序运行过程中,根据程序的需要分配 ...

  4. 内存管理-动态分区分配方式模拟

    内存管理 - 动态分区分配方式模拟 操作系统第二次课程作业 - 动态分区分配方式模拟 项目需求 假设初始态下,可用内存空间为640K,并有下列请求序列,请分别用首次适应算法和最佳适应算法进行内存块的分 ...

  5. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

  6. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  7. Linux内存从0到1学习笔记(4,TLB)

    一.TLB简介 Kernel初始化的时候,会在初始化内存中创建页表:而处理器读取指令和数据的时候需要首先通过MMU查表得到物理地址,然后在访问物理地址读取指令或数据.MMU查表过程汇中需要4次访问内存 ...

  8. 释放变量所指向的内存_前端基础突破(二)内存回收与内存泄漏

    垃圾回收的必要性? 在程序中,我们定义了许多变量,变量存储的在内存中,这时就需要一套机制来管理内存.在javascript中,并没有提供对应的api给开发者直接手动控制内存的申请和回收,因为javas ...

  9. python 释放变量所指向的内存_通俗易懂的Python垃圾回收机制及内存管理

    Python垃圾回收机制及内存管理 内存管理: 先定义一个变量 name='wxl' 那么python会在内存中开辟一小块区域存放"wxl",此时变量的值是我们真正想要存储的,wx ...

最新文章

  1. hive 列转行_掌握这个SQL技巧超越80%的人——行转列/列转行
  2. 等号赋值与memcpy的效率问题
  3. 详解Framework
  4. 案例:返回固定页面的http服务器
  5. C/C++还能混合编程
  6. pythoning——11、正则匹配
  7. gtj2018如何生成工程量报表_如何更高效地使用EXCEL,一键生成报表?
  8. 软考知识点梳理--鱼骨图
  9. Linux 系统编程技巧与概念 第12章 基于 TLV 传输
  10. rman一致性备份oracle数据库可以在非归档模式下么,探索ORACLE之RMAN_03一致性备份...
  11. [Tyvj 模拟赛] 运
  12. mac电脑如何配置mysql环境变量
  13. 卡巴斯基实验室解析勒索软件的发展与攻防
  14. 使用C++编写卷积神经网络(一)
  15. 360与腾讯之争之厚黑学分析
  16. 高德地图E/libEGL: call to OpenGL ES API with no current context (logged once per thread)
  17. 虹科案例|光刻机汞灯替代者—定制大功率UV-LED平行光源
  18. 基于Java Springboot+Vue+MyBatis音乐播放系统设计实现
  19. 通许县中等职业学校计算机,2021通许县中等职业学校招生简章
  20. Oracle索引和事务

热门文章

  1. SpringCloud配置文件 application.yml和 bootstrap.yml区别,执行顺序
  2. 人工智能训练云燧T10
  3. MLPerf结果证实至强® 可有效助力深度学习训练
  4. 人工智能在音频链中找到自己的声音
  5. 将HLSL射线追踪到Vulkan
  6. CUDA运行时 Runtime(四)
  7. Cookie和Session的区别与联系
  8. React router 的 Route 中 component 和 render 属性理解
  9. python 遍历字符串
  10. Dialog 带白色的边的处理方法