動的配列&mallocを使いたい
mallocを使って動的配列を宣言したいのですが、方法がわかりません。
まず、初心者の作るプログラムでは、まずmallocは必要ありません。
今時のパソコンは、char s[1000000]; 程度の配列ではビクともしません。
また、組み込みの場合は逆で、メモリ節約のためにもmallocは控えるべきです。
そのことをふまえた上で、次の使い方を読んでください。
次のようにしてメモリを確保します。int型以外でも同じです。構造体ですら。
int *data;
data = malloc(sizeof(int) * 必要な要素数);
確保したメモリは普通の配列と同じようにして使えます。
data[i] = 10;
要素数を増やしたくなったら次のようにして増やします。
data = realloc(data,sizeof(int) * 必要な要素数);
配列を使わなくなったらこのようにして解放します。
free(p);
なお、ごく小規模のプログラムなら、free関数による解放をしなくても問題はないのですが、
大規模なプログラムで解放を忘れると、いわゆる「動かしているうちにだんだん遅くなる」の原因となります。
したがって、解放するクセをつけるためにも、必ずfree関数を呼び出しましょう。