首页 > 系统相关 >C++ - 二级指针动态内存申请与释放

C++ - 二级指针动态内存申请与释放

时间:2024-08-08 15:31:40浏览次数:11  
标签:int pArray cols C++ ++ 动态内存 Array 指针 row

C语言描述:

#include "stdio.h"
#include "stdlib.h"
#include "assert.h"

//二维数组内存申请
int** createArray2D(int row, int clos)
{
	int** pArray = (int**)malloc(sizeof(int*) * row);
	assert(pArray);
	for (int i = 0; i < row; i++)
	{
		pArray[i] = (int*)malloc(sizeof(int) * clos);
	}
	return pArray;
}
//二维数组初始化
void InitArray(int** Array, int row, int cols)
{
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			Array[i][j] = i + j;
		}
	}
}
//二维数组打印
void PrintfArray(int** Array, int row, int cols)
{
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			printf("%d\t", Array[i][j]);
		}
		printf("\n");
	}
}

//二维数组内存释放
void deleteMemory(int**& pArray, int row)
{
	for (int i = 0; i < row; i++)
	{
		free(pArray[i]);
	}
	free(pArray);
	pArray = NULL;

	if (pArray == NULL)
	{
		printf("释放成功\n");
	}
}


void InitArray1(int Array[][3], int row, int cols)
{
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			Array[i][j] = i + j;
		}
	}
}

void PrintfArray1(int Array[][3], int row, int cols)
{
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < cols; j++)
		{
			printf("%d\t", Array[i][j]);
		}
		printf("\n");
	}
}


int main()
{

	//1.二级指针申请内存
	printf("二级指针申请内存:\n");
	int** pArray = createArray2D(4, 3);
	InitArray(pArray, 4, 3);
	PrintfArray(pArray, 4, 3);
	deleteMemory(pArray,4);


	//2.数组指针申请内存
	printf("数组指针申请内存:\n");
	int(*p)[3] = NULL;
	p = (int(*)[3])malloc(sizeof(int[3]) * 4);

	InitArray1(p, 4, 3);
	PrintfArray1(p, 4, 3);

	system("pause");
	return 0;
}

运行结果:

 

 

C++描述:

#include"iostream"
using namespace std;

//二维数组内存申请
int** createArray2D(int row, int clos)
{
	int** pArray = new int* [row];
	for (int i = 0; i < row; i++)
	{
		pArray[i] = new int[clos];
	}
	return pArray;
}

//二维数组内存释放
void deleteMemory(int**& pArray, int row)
{
	for (int i = 0; i < row; i++)
	{
		delete[] pArray[i];
	}
	delete[] pArray;
	pArray = nullptr;
}



int main()
{
	int** p1 = createArray2D(3, 2);

	//初始化二维数组
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			p1[i][j] = i;
			cout << p1[i][j] << "\t";
		}
		cout << endl;
	}
	deleteMemory(p1, 3);
	if (p1 == nullptr)
	{
		cout << "释放成功" << endl;
	}

	return 0;
}

运行结果:

 

标签:int,pArray,cols,C++,++,动态内存,Array,指针,row
From: https://www.cnblogs.com/zhuchunlin/p/18349000

相关文章

  • 一文搞懂C/C++常用编译器
    1.C++编译器介绍1.1.MSVC1.1.1.VisualC++与VisualStudio的版本对应关系1.1.2.工具链的主要工具1.2.GCC1.2.1.GCC的主要优点1.2.2.GCC的常用工具1.2.3.MinGW1.3.Clang/LLVM1.3.1.Clang介绍1.3.2.Clang与LLVM的关系1.3.3.Clang/LLVM与GCC2.......
  • C++ char*类型与vector类型的相互转换
    char*类型与vector<char>类型的相互转换很多时候需要使用动态的字符串,但是char*难以完成相应的扩容操作,而动态数组vector则可以简单地完成,结合二者特性就可以完成动态字符串,同时,也需要二者类型的相互转换:char*转vector<char> vector<char>buffer(ch,ch+4);vector<cha......
  • C++竞赛初阶L1-10-第四单元-if练习(第24课)100015: 判断能否被 3,5,7 整除
    题目内容给定一个整数 x,判断它能否被 3,5,7 整除,并输出以下信息:1、能同时被 3,5,7 整除(直接输出 357,每个数中间一个空格);2、只能被其中两个数整除(按从小到大的顺序输出两个数,例如:35 或者 37 或者 57,中间用空格分隔);3、只能被其中一个数整除(输出这个除数);4、不能......
  • C语言字符数组,字符指针,指针数组(字符串)的比较与使用
    参考文档https://blog.csdn.net/yuabcxiao/article/details/89600907 字符数组与字符指针在C语言中,可以用两种方法表示和存放字符串:(1)用字符数组存放一个字符串charstr[]="Iamhappy";(2)用字符指针指向一个字符串char*str="Iamhappy";字符数组#include<iostrea......
  • VsCode C++ namespace has no member错误
    此问题VSCode C++插件本身bug解决办法一:还原c++插件到旧版本解决方法二:但此方法智能提示会有很多多余的信息(有缺陷)在官方未推出相应布丁之前,可按照以下步骤避免该问题:1、按顺序打开:文件》首选项》设置2、在右边,用户设置窗口添加以下代码:"C_Cpp.intelliSenseEngine":"TagP......
  • windows平台中使用vscode远程连接linux进行c++开发配置教程(内容详细适合小白)-2021-3-3
    文章目录一、简要介绍二、软件安装步骤1.linux系统安装2.vscode安装3.ssh安装4.配置Remote-SSH5.安装远程插件6.简单小测试三、配置vscode开发环境1.默认设置、用户设置、远程设置和工作区设置2.c++开发设置a).c_cpp_properties.jsonb).tasks.jsonc).launc......
  • 计算机毕业设计项目推荐,院系资料分类管理平台 84184(开题答辩+程序定制+全套文案 )上万
    目 录摘要1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2 院系资料分类管理平台系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析......
  • 计算机毕业设计项目推荐,红色旅游网站设计与开发 99214(开题答辩+程序定制+全套文案 )上
    摘 要21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于旅游服务管理也是十分常见的。过去使用手工的管理方式对旅游服务进行管理,造成了管理繁琐、难以维护等问题,如今使用计算机对旅游服务的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易......
  • C语言 --- 指针
    目录1. 概念2.指针变量初始化2.1被调修改主调 2.2 指针变量的引用3.指针+一维整型数组3.1指针的运算4.指针+一维字符型数组4.1指针+字符串1. 概念指针就是地址 --- 内存单元的编号指针也是一种数据类型---这种数据类型专门用来处理地址......
  • C++-练习-11
      题目:编写一个程序,要求用户输入全球当前的人口和美国当前的人口(或其他国家的人口)。将这些信息存储在longlong变量中,并让程序显示美国(或其他国家)的人口占全球人口的百分比。源代码:#include<iostream>intmain(){ usingnamespacestd; longlongglobal_population......