Heap corruption detected - C (СИ) (149847)

Узнай цену своей работы

Формулировка задачи:

В процессе разработки получилась интересная ситуация. Есть такой код
char **map;
map = (char**)calloc(mapYsize, sizeof(char*));
for (i = 0; i < mapYsize; i++){
    map[i] = (char*)calloc(mapXsize, sizeof(char));
    for (j = 0; j < mapXsize; j++){
        fscanf(tFile, "%hhd", &(map[i][j]));
        if (map[i][j] >= 10){ map[i][j] = 10; }
    }
}
...
for (i = 0; i < mapYsize; i++){
    free(map[i]);
}
free(map);
Когда доходит до освобождения одномерных подмассивов, вылетает HEAP CORRUPTION DETECTED (при чём на каждой итерации цикла). Замена calloc на malloc или char на short ситуацию не меняет. Падает как на компиляторе MS VS, так и на gcc. Что может послужить причиной проблемы и как ее решить?

Решение задачи: «Heap corruption detected»

textual
Листинг программы
"%с"

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.733 из 5