Я новичок, пытающийся научиться создавать массивы динамиков в C. Код не дает мне никаких ошибок, когда я его создаю с помощью кода: блоки, но когда я запускаю его сбой. Я думаю, что авария связана с тем, как я освобождаю свою память, потому что код дает мне желаемый результат перед сбоем.Как я могу освободить память в динамически распределенном массиве?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
int *p = (int *)malloc(sizeof(*p));
printf("Hello World! I have created a dynamic array of 20x30 integers! \n");
for (i = 0; i <= 19; i++)
{
p[i] = (int)malloc(sizeof(int*));
printf(" %2d ", i);
for (j = i + 1; j <= 29 + i; j++)
{
p[i] = 0;
printf("%2d", j);
}
printf("\n");
}
for (i = 0; i <= 19; i++);
{
free(p[i]);
}
free(p);
return 0;
}
Ваш первый malloc выделяет пространство для одного int. – tkausl
В дополнении 'p [i] = (int) malloc (sizeof (int *));' неверно. 'p [i]' является 'int', а не указателем, поэтому вы не должны хранить там указатель. Во многих системах размер 'int' и указатель различны и, следовательно, код может также вызвать сбой. – kaylum
[фиксированный код] (http://ideone.com/WWiYZL) – BLUEPIXY