为什么这个代码总是出现断点,求解决

int main()
{


int o;
int n = 9;

char** map;
map = (char**)malloc(n);
for(o=0;o<n;o++)
{
    map[o]= (char*)malloc(n + 3);

    if (map == NULL)
        return 0;
    memset(map[o], 0, n + 3);
}



system("pause");
for(o=0;o<n;o++)
{
    free(map[o]);
}
return 0;

}

题目描述

题目来源及自己的思路

相关代码

粘贴代码文本(请勿用截图)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.5k
1 个回答

map = (char**)malloc(n); --- 申请得到n字节空间。只能存放 n/4 个指针。
for(o=0;o<n;o++) --- 而存放n个指针,需要n*4字节的空间

map = (char*)malloc(4n); --- 我想你需要这样

还有超多内存泄露问题。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进