我试图创建一个动态的char二维数组,如下所示:

char** ppMapData = (char**)malloc(sizeof(char*)*iMapHeight);
for (int i=0; i< iMapHeight; i++)
{
    ppMapData[i] = (char*)malloc(sizeof(char)*iMapWidth);
    //do something
}

// do something

for (int i=0; i<iMapHeight; i++)
    free(ppMapData[i]);
free(ppMapData);

在我看来,这很好;但是,在运行时,我的程序在调用free(ppMapData[i])的行上崩溃。有什么问题吗。
非常感谢。

最佳答案

一目了然,自由的看起来很好。接下来您应该测试的是确保在结束时不会溢出这些数组中的任何一个。这可能会导致内存分配系统出现问题。
如果您使用的是visual studio,可以调用CrtCheckMemory来帮助验证您没有破坏任何东西。该调用仅在调试生成中有效。

关于c - 执行“free(ppMapData [i])”时,程序会崩溃什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/361115/

10-12 22:26