私は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は、1つのintにスペースを割り当てます。 – tkausl
追加で 'p [i] =(int)malloc(sizeof(int *));'が間違っています。 'p [i]'は 'int'なのでポインタではないので、そこにポインタを格納すべきではありません。多くのシステムでは、 'int'とポインタの大きさが異なり、コードがクラッシュする可能性もあります。 – kaylum
[固定コード](http://ideone.com/WWiYZL) – BLUEPIXY