new/delete多维数组

 new用法:

  1.开辟单变量地址空间

  1)new
int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int
*a = new int 即为将一个int类型的地址赋
            值给整型指针a.

  2)int
*a = new int(5)作用同上,但是同时将整数赋值为5

  2.开辟数组空间

  一维: int *a = new
int[100];开辟一个大小为100的整型数组空间

  

  一般用法: new 类型 [初值]

  C++ delete用法:

  1. int
*a = new int;

  delete a; //释放单个int的空间

  2.int
*a = new int[5];

  delete [] a; //释放int数组空间

  要访问new所开辟的结构体空间,无法直接通过变量名进行,只能通过赋值的指针进行访问.

  用new和C++ delete可以动态开辟,撤销地址空间.在编程序时,若用完一个变量(一般是暂时存储的数组),下次需要再用,但却又想省去重新初始化的功夫,可以在每次开始使用时开辟一个空间,在用完后撤销它.

int **a = new int[5][6],这个根本编译不过去吧。

如果你想new一个二维数组出来,应该这样:

下面看一下二维的

int** a= new int*[5];

for (int i = 0; i < 5; ++i)

{

a[i] = new int[6];

}

delete的时候,反过来就行了:

for (int i = 0; i < 5; ++i)

{

delete[] a[i];

}

delete[] a;

三维数组,与此相同,举例如下:

int*** a= new int**[5];

for (int i = 0; i < 5; ++i)

{

a[i] = new int*[6];

for (int j = 0; j < 6; ++j)

{

a[i][j] = new int[7];

}

}

for (int i = 0; i < 5; ++i)

{

for (int j = 0; j < 6; ++j)

{

delete[] a[i][j];

}

delete[] a[i];

}

delete[] a;

时间: 2024-11-11 13:49:58

new/delete多维数组的相关文章

c++ 用new创建二维数组~创建指针数组【转】

#include <iostream> using namespace std; void main() { //用new创建一个二维数组,有两种方法,是等价的 //一: int (*p)[10] = new int[5][10]; //二: int **p = new int* [5]; for(int i=0;i <5;i++) p[i] = new int[10]; //指针数组的创建,也有两种方法 //一: char **pa = new char* [4]; for (int

C++ 二维数组/多维数组的动态分配(new)和释放(delete)

1. 一维数组 对于简单的一维数组动态内存分配和释放,如下: int *array1D;//假定数组长度为m //动态分配空间 array1D = new int [m]; //释放 delete [] array1D; 2. 二维数组 二维数组的动态分配和释放 //假定数组第一维长度为m, 第二维长度为n //动态分配空间 <pre name="code" class="cpp">int **array2D<span style="fo

二维数组的动态分配(new)、初始化(memset)和撤销(delete)

来自http://blog.csdn.net/maverick1990/article/details/22829135 一维数组 动态分配,int *array = new int[10] 初始化,memset(array,0,sizeof(array)); 撤销,delete[] array 二维数组m行n列 int **d; d = new int *[10]; for(int i =0;i<10;i++){ d[i] = new int[5] } 先分配一个10单元的数组指针的指针的首地

模板:使用new delete 创建二维数组

1 int **arr_matrix = new int*[n]; 2 for(i = 0; i < n; ++i) arr_matrix[i] = new int[n]; 3 //内容 4 for(i = 0; i < n; ++i) delete [] arr_matrix[i]; 5 delete [] arr_matrix; 模板:使用new delete 创建二维数组

71. C++ 分别用指针数组和二维数组生成二维空间,存储数据并释放。 练习new/delete, new[]/delete[]

分别用指针数组和二维数组生成二维空间,存储数据并释放.比如,数据如下:  //使用了下fgetc() 1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 5 6 int main() 7 { 8 #if 0 //生成二维数组存储 9 FILE* fp = fopen("G:\\qtcode\\temp.txt","r"); 10 11 //char buf[3

C++基础:二维数组动态的申请内存和释放内存

使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存.常见的申请内存的方法有两种:malloc/free 和 new/delete. 一.malloc/free (1)申请一维数组 void dynamicCreate1Array() { int m; int i; int *p; cout<<("please input the length of data:"); cin >> m; p = (int*)malloc(sizeof(in

c++ 动态分配二维数组 new 二维数组

#include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //建立一个16行5列的数组 int **p = new int*[16];//分配堆内存16个 int* for(int i = 0;i < 16;i++)//分配堆内存给每一个int* p[i] = new int[5]; //给这个数组赋值 int k = 0; f

动态申请和释放一个二维数组

动态申请一个二维数组也很常见,下面是常见的两种形式. //方法1 unsigned char** pImg= new unsigned char*[m]; for(int i=0;i<m;i++){ pImg[i]=new unsigned char[n]; } //方法2 unsigned char** pImg= new unsigned char*[m]; unsigned char* arr= new unsigned char[m*n]; for(int i=0;i<m;i++){

【转载】二维数组的动态分配和参数传递

本篇随笔为转载,原贴地址:http://www.cnblogs.com/bigshow/archive/2009/01/03/1367661.html. 1. C语言动态分配二维数组 (1)已知第二维 Code-1 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char *) * m); printf("%d\n", sizeof(a));//4,指针 printf("%d\n", sizeof(a[0]