ユーザパラメータを取得してそれらから整数配列を作成するCコードを記述しています。私は配列の長さと各要素の値を提供するようにユーザーに頼みます。グローバル整数配列へのアクセス時にセグメンテーションフォルトが発生する
次のコードを実行すると、printArray()
関数呼び出しでエラーが発生します。私が代わりに関数呼び出しを行うのmain()
にprintArray()
コードをコピーしたときに、配列が正しく印刷されます。)(プリントアレイにデバッガに続いて、セグメンテーションフォールト自体はprintf("%d", intArray[i])
NOTEで起こります。これにより、私はグローバル変数やポインタに関する問題があると思います。私はまだCを学んでいるので、あなたの指導は高く評価されます。
どうすればこの問題を解決できますか?詳細は下のデバッガ出力を参照してください。
void printArray();
int arraySize;
int* intArray;
int main() {
printf("Enter array length:\n");
scanf("%d", &arraySize);
int* intArray = (int*) malloc(sizeof(int)*arraySize);
printf("Enter an integer value for each array element:\n");
for (int i = 0; i < arraySize; i++) {
printf("Enter element %d:\n", i);
scanf("%d", &intArray[i]);
}
printArray();
return 0;
}
void printArray() {
printf("[");
for (int i = 0; i < arraySize; i++) {
printf("%d", intArray[i]);
}
printf("]\n");
}
複数のスレッドを使用していますか? –
いいえ、少なくとも意図的にではありません。 Rajeshが以下の解決策を投稿したが、私はその「スレッド2」の部分について疑問を抱いている。多分main()は独自のスレッドを取得しますか? –