课程
/后端开发
/C++
/C++远征之离港篇
请问二维数组怎么申请和释放内存?谢谢
2015-12-10
源自:C++远征之离港篇 5-4
正在回答
char **str = new char*[100]; for (int i = 0; i < 100; i++) str[i] = new char[100]; //这样就申请好了二维字符数组了。 //释放时也是类似 for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { if (str[i]!= NULL) { delete str[i]; } } delete str; }
Soardbjiao 提问者
前面的答案有个问题:str并不是传统意义的二维数组。
二维数组一般这样定义 int a[10][10]; 这样a中的100个元素在内存中是连续存放的。
可以按照答案那样写的话,str指向的是char*数组,其中的100个char指针指向另外的100个char数组,也就是这10000个char并不是连续存放的!
很多时候会依赖于二维数组连续存放元素的特性而用指针来访问整个数组空间,这种方法就不适用于str所指的数组了。
赞同一楼
申请内存char *str = new char[100];
释放内存delete []str; str = NULL;
举报
C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通