为了账号安全,请及时绑定邮箱和手机立即绑定

二维数组怎么申请和释放内存

请问二维数组怎么申请和释放内存?谢谢

正在回答

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;
 }


0 回复 有任何疑惑可以回复我~
#1

Soardbjiao 提问者

非常感谢!
2015-12-11 回复 有任何疑惑可以回复我~

前面的答案有个问题:str并不是传统意义的二维数组。


二维数组一般这样定义 int a[10][10];  这样a中的100个元素在内存中是连续存放的

可以按照答案那样写的话,str指向的是char*数组,其中的100个char指针指向另外的100个char数组,也就是这10000个char并不是连续存放的!

很多时候会依赖于二维数组连续存放元素的特性而用指针来访问整个数组空间,这种方法就不适用于str所指的数组了。

0 回复 有任何疑惑可以回复我~

赞同一楼

0 回复 有任何疑惑可以回复我~

申请内存char *str = new char[100];

释放内存delete []str;
                str = NULL;

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

二维数组怎么申请和释放内存

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信