私は、(ユーザーの入力によって決定される) 等しいサイズの配列を作成し、それらに乱数を入力して、C を練習しようとしています。いくつかの問題が発生しています。まず、配列の作成と割り当て:
srandom((int)time(NULL)); /* initialize random seed for later use*/
unsigned long arraySize = strtoul(argv[1], NULL, 0);
int *originalArray = malloc(arraySize * sizeof(int));
int *ascendingOrderArray = malloc(arraySize * sizeof(int));
int *descendingOrderArray = malloc(arraySize * sizeof(int));
次に、配列に乱数を入力するループ:
int i = 0;
int randInt;
/* Seed each array with identical randomly generated numbers */
while(i++ < arraySize){
randInt = (int)random()%100;
*originalArray++ = randInt;
printf("original array assign: %d\n", originalArray);
*ascendingOrderArray++ = originalArray;
printf("ascending array assign: %d\n", ascendingOrderArray);
*descendingOrderArray++ = originalArray;
printf("descending array assign: %d\n", descendingOrderArray);
}
ここで、事態は奇妙になります。各配列には、各インデックスの originalArray に割り当てられた番号と同じ番号が割り当てられると予想しています。しかし、printf
ステートメントから得た出力にはそれが反映されていません。さらに、数字は巨大ですが、2 から始まり、多くの桁に及ぶ同様の基数をすべて持っています。それは起こっているべきですか?
最後に、すべての作業が完了し、あまり意味のない印刷と書式設定を行うと、配列を解放しようとします。
free(originalArray);
originalArray = NULL;
free(ascendingOrderArray);
ascendingOrderArray = NULL;
free(descendingOrderArray);
descendingOrderArray = NULL;
return 0;
しかし、私はpointer being freed was not allocated
エラーが発生しています。
私はここで複数のレベルで失敗していると確信していますが、問題は次のとおりです。