/** * c++动态申请多维数组 * 第一种 malloc/free * @param len 一维数组大小 * @param m 二维数组行数 * @param n 二维数组列数 */ voiddynamicCreate1Array(int len, int m, int n){ // 一维数组 int *p; p = (int*)malloc(sizeof(int)*len); // 动态开辟m大小的数组 cout << "malloc/free" << endl; PrintArray(p, len); // 释放空间 free(p);
// 二维数组 int **p2; p2 = (int**)malloc(sizeof(int*)*m); //开辟行 for (int i = 0; i < m; ++i) { p2[i] = (int*)malloc(sizeof(int*)*n); //开辟列 } PrintArray(p2, m, n); // 释放空间 for (int i = 0; i < m; ++i) free(*(p2+i)); }
/** * c++动态申请多维数组 * 第二种 new/delete * @param len 一维数组大小 * @param m 二维数组行数 * @param n 二维数组列数 */ voiddynamicCreate2Array(int len, int m, int n){ // 开辟空间 int *p = newint[len]; // 只分配空间未进行初始话 int *p1 = newint[len](); // 分配空间并进行初始化 cout << "new/delete" << endl; PrintArray(p, len); PrintArray(p1, len); // 释放空间 delete[] p; delete[] p1;
int **p2 = newint*[m]; // 开辟行 for (int i = 0; i < m; ++i) p2[i] = newint[n](); // 开辟列 PrintArray(p2, m, n); // 释放空间 for (int i = 0; i < m; ++i) delete[] p2[i]; delete[] p2; }