ここで学んだことを使用して: How to use realloc in a function in C、私はこのプログラムを書きました。
int data_length; // Keeps track of length of the dynamic array.
int n; // Keeps track of the number of elements in dynamic array.
void add(int x, int data[], int** test)
{
n++;
if (n > data_length)
{
data_length++;
*test = realloc(*test, data_length * sizeof (int));
}
data[n-1] = x;
}
int main(void)
{
int *data = malloc(2 * sizeof *data);
data_length = 2; // Set the initial values.
n = 0;
add(0,data,&data);
add(1,data,&data);
add(2,data,&data);
return 0;
}
data
このプログラムの目標は、値を追加し続けることができる動的配列を作成することです。に値を追加しようとすると、値data
がいっぱいの場合、realloc を使用して配列の長さが増加します。
質問
このプログラムはコンパイルされ、実行時にクラッシュしません。ただし、 を出力するdata[0]
とdata[1]
、data[2]
が得られ0,1,0
ます。番号2
は配列に追加されませんでした。
これは私の間違った使い方によるものrealloc
ですか?
追加情報
このプログラムは、後でさまざまな数の「追加」および場合によっては「削除」機能で使用されます。また、realloc
失敗した ( である) かどうかを確認する必要があることはわかっNULL
ていますが、簡単にするためにここでは省略しています。
私はまだ C の学習と実験を行っています。しばらくお待ちいただきありがとうございます。