分配和释放动态数组[1]

  • 分配:
new 类型名T [ 数组长度 ]

数组长度可以是任何表达式,在运行时计算

  • 释放:delete[] 数组名p
    释放指针p所指向的数组。
    p必须是用new分配得到的数组首地址。

例6-17 动态创建对象数组举例

#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() {Point *ptr = new Point[2]; //创建对象数组ptr[0].move(5, 10); //通过指针访问数组元素的成员ptr[1].move(15, 20); //通过指针访问数组元素的成员cout << "Deleting..." << endl;delete[] ptr; //删除整个对象数组return 0;
}

本例中delete[] ptr;写方括号它才释放两个对象,看到两个destructor被调用两次。如果不写方括号,它只释放一个对象,那么另外一个内存就泄漏了。程序报错情况如下图所示:

动态创建多维数组

new 类型名T[第1维长度][第2维长度]…;

  • 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针。

例如:

char (*fp)[3];
fp = new char[2][3];
//或
char (*fp)[3] = new char[2][3];

例6-19 动态创建多维数组

#include <iostream>
using namespace std;
int main() {int(*cp)[9][8] = new int[7][9][8];//赋值for (int i = 0; i < 7; i++)for (int j = 0; j < 9; j++)for (int k = 0; k < 8; k++)*(*(*(cp + i) + j) + k) = (i * 100 + j * 10 + k);//输出到控制台for (int i = 0; i < 7; i++) {for (int j = 0; j < 9; j++) {for (int k = 0; k < 8; k++){cout << cp[i][j][k] << " ";}                 cout << endl;}cout << endl;     }delete[] cp;return 0;
}

参考

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

js 多维数组长度_C++申请与释放动态数组1(学习笔记:第6章 16)相关推荐

  1. c语言整形数组长度_c语言中如何求数组长度

    展开全部 1.c语言中,e5a48de588b63231313335323631343130323136353331333337613861定义数组后可以用sizeof命令获得数组的长度(可容纳元素个 ...

  2. c++ 一维数组长度_每天一点C / 一维数组和指针

    哈喽,我是老吴,继续记录我的学习心得. 每天一点系列是我对微习惯的践行.现在能做到每天一点 C,将来就会有更多的每天一点系列,没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux,不要给自己 ...

  3. Java 解决数组长度不可变问题 Java 重新定义数组

    // 解决数组长度不可变的问题 // 因为数组在定义的时候已经给定了长度,所以如果有新的元素加入,数组的本身已经放不下了 // 这时候就需要重新将原数组的元素拿出来重新定义数组,将旧元素和新元素重新赋 ...

  4. asp数组中REDIM的用法(动态数组)

    asp数组中REDIM的用法(动态数组) 动态数组里面的一个语句,只能出现在过程里面,可以多次使用.可以改变数组大小,和维数 格式: REDIM [Preserve] 数组名(下标1[下标2....] ...

  5. delphi 获取数组长度_C++可变长的数组,老司机手把手教你实现!

    01 实现自定义的可变长数组类型 假设我们要实现一个会自动扩展的数组,要实现什么函数呢?先从下面的main函数给出的实现,看看有什么函数是需要我们实现的. int main(){ MyArray a; ...

  6. c语言整形数组长度_C语言获取数组长度的几种方法

    如何通过编程的手段获取某个数组的长度呢? 答案是使用关键字 sizeof. 前面说过,用 sizeof 可以获得数据类型或变量在内存中所占的字节数.同样,用 sizeof 也可以获得整个数组在内存中所 ...

  7. java 数组下标和值的关系_java数组长度可以改变吗?与数组下标有何异同?

    大家了解什么是数组长度吗?什么是数组下标吗?经常有人将这两个词混淆,今天呢,小编给小伙伴们带来了有关数组的相关知识,就让我们一起了解了解吧. 有的人说数组是可以改变,有的人说数组是不可以.然而我在使用 ...

  8. java两个长度不同数组_两组数组,长度不一样,如果其中一个数组的值在另一个中不存在,则不符合要求.怎么算?...

    思路一 先找到最长的数组,然后循环短的数组并判断元素是否在长数组中 public class Main { public static void main(String[] args) throws ...

  9. python中对比数组长度_在Python中检索数组长度的首选方法

    python中对比数组长度 The __len__() is a method on container types. However, python also provides another op ...

最新文章

  1. 个人技术生涯的感悟(2)
  2. PspCidTable 完全解读
  3. 【深度学习】基于Pytorch的线性模型概念辨析和实现(二)
  4. DJFP2FP2计算机电缆,ZR-DJFP2FP2-22 (ZR-DJFP2FP2-22计算机电缆)(百勤石油)
  5. android fota解决方案,Android智能终端FOTA方案的制作方法
  6. wps表格在拟合曲线找点_excel拟合曲线函数表达式,excel散点拟合出来的公式看不懂。请问怎么写入表格使用?...
  7. 蒟蒻刷洛谷(11月7日到11月13日)
  8. BOF算法 基于SIFT+KMeans
  9. 笔记 绝望主妇第1季第2章 --- desperate housewives session 1 episode 2
  10. ”什么?穆冉不敢相信地看向穆大海
  11. java md5类_java的md5加密类
  12. vue实现echarts词云图业务【详细配置版】
  13. winSCP 集成PuTTY附下载
  14. Codeforces 14E Camels (DP)
  15. 工业虚拟现实解决方案
  16. python中的arange函数,Python中的arange是什么?和range有什么不同?
  17. 使用命令行统计代码行数
  18. 十月总结分享(剪贴板)
  19. C语言英文背单词软件,C语言背单词程序
  20. 助理电子商务师html,助理电子商务师考试HTML相关试题汇总.doc

热门文章

  1. RGB Color Codes Chart
  2. Single Shot Multibox Detection (SSD)实战(下)
  3. 3D目标检测论文阅读摘要
  4. 2021年大数据Flink(十二):流批一体API Transformation
  5. Python 算术运算符
  6. Android onAttach 的使用
  7. Spark 分布式计算原理
  8. 第2节 mapreduce深入学习:4, 5
  9. 不同数据类型的处理函数(一)
  10. Activiti——HelloWorld-模拟流程执行(三)