Я пытаюсь создать структуру с двумерным массивом для хранения строк.Но я продолжаю получать ошибку двойного освобождения при выполнении программы
struct:
struct room{
int x;
int y;
char ** floor;
};
Вот мой malloc:
struct room * newRoom = malloc(sizeof(struct room));
newRoom->floor = malloc(sizeof(char *) * height);
if(newRoom->floor == NULL || newRoom == NULL)
{
printf("Room allocation failed \n");
}
for(i=0; i<width ;i++)
{
newRoom->floor[i] = malloc(sizeof(char) * (width + 1));
if(newRoom->floor[i] == NULL)
{
printf("Room string allocation failed \n");
}
}
и мой free, которыйчто, по-видимому, вызывает ошибку:
for(i=0; i<size ;i++)
{
free(toBeFreed->floor[i]);
}
free(toBeFreed->floor);
free(toBeFreed);
Я не особо много делаю с массивом, кроме как заполняю его символами (используя для циклов) и вызываю mvprintw (), поэтому я не думаю проблема между ними.Что я делаю неправильно?
Редактировать: поэтому я должен был уточнить, но ширина == высота == размер, переменные находятся в разных файлах, поэтому они немного отличаются
РЕДАКТИРОВАТЬ2:очевидно, высота! = ширина, и я даже не могу держать имя своей переменной прямо!