Что вызывает сбой моей программы при выполнении команды «free (ppMapData [i])»? - PullRequest
0 голосов
/ 12 декабря 2008

Я попытался создать динамический 2D-массив из 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]). Есть идеи, в чем тут проблема. Большое спасибо.

Ответы [ 11 ]

0 голосов
/ 18 декабря 2008

Является ли iMapHeight / iMapWidth постоянным? Если нет, они могут быть изменены между ними, вызывая проблемы. Также, как предлагают другие, проверьте на null возвращаемые malloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...