数组内存的释放与申请
参考链接:https://www.cnblogs.com/usec/p/7413829.html
使用二维数组的时候,有时候事先并不知道数组的大小,因此就需要动态的申请内存。常见的申请内存的方法有两种: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(int)*m);//动态开辟 cout << "please input data" << endl; for (i = 0; i < m; i++) cin >> p[i]; cout << "data is :"; for (i = 0; i < m; i++) cout << p[i] << endl; free(p); }
(2)申请二维数组
void dynamicCreate2Array() { int m, n; int i, j; int **p; printf("please input the row and col:"); cin >> m >> n; //scanf("%d%d", &m, &n); p = (int**)malloc(sizeof(int*)*m); //开辟行 for (i = 0; i < m; i++) { *(p + i) = (int*)malloc(sizeof(int)*n);//开辟列 } //输入数据 printf("please input data:"); for (i = 0; i < m; i++) for (j = 0; j < n; j++) cin >> p[i][j]; //输出数据 for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { cout << p[i][j]; } cout << endl; } //释放开辟的二维空间 for (i = 0; i < m; i++) free(*(p + i)); }
二、new/delete
(1)申请一维数组
void DynamicCreate1Array() { int len; int i; cout << "please input the length of data: "; cin >> len; int *p = new int[len]; cout << "please input data: "; for (int i = 0; i < len; i++) cin >> p[i]; cout << "data is " << endl; for (i = 0; i < len; i++) cout <<p[i] << endl; delete[] p; }
(2)申请二维数组
void DynamicCreate2Array() { int m, n; int i; cout << "input row and col: "; cin >> m >> n; //动态开辟空间 int **p = new int*[m]; //开辟行 for (int i = 0; i < m; i++) p[i] = new int[n]; //开辟列 cout << "input data: "; for (i = 0; i < m; i++) for (int j = 0; j < n; j++) cin >> p[i][j]; cout << "output: " << endl; for (i = 0; i < m; i++) { for (int j = 0; j < n; j++) cout << p[i][j]<<" "; cout << endl; } //释放开辟的资源 for (i = 0; i < m; i++) delete[] p[i]; delete[] p; }
注:另一种方法:
row:行
col:列
unsigned int **ppPathes;
*ppPathes = (unsigned int *)calloc(row * col, sizeof(unsigned int));
使用malloc:
*ppPathes = (unsigned int *)malloc(sizeof(unsigned int )*(PathNumTemp) * (pathLenTemp + 1));
加油啦!加油鸭,冲鸭!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~