をmallocを使用して取っている間、私はこの種の何かがありますセグメンテーションフォールト入力
int n,m;
scanf("%d %d",&m,&n);
int *arr = malloc(sizeof(int)*n*m);
for(int i=0;i<m*n;scanf("%d",arr+i),i++);
今言うのn = 2およびm = 3のために、それは最初の5つの数字を受け入れ、上のセグメンテーションフォールトを与えます6番目の番号。私はループの直後に印刷物を試しましたが、印刷されていません。何が問題なのでしょうか?私は同様の構成を広範囲に使用しており、これまで問題に遭遇したことはありません。
EDIT 1: 問題は後でプログラムで発生しましたが、ループの直後にprintfがあり、何も印刷されなかったので、ここになければならないと仮定しました。なぜprintfは何も印刷しませんでしたか?並列実行と関係がありますか?そして申し訳ありませんが、私はオーバーフローをスタックするために新しいです。
[未定義の動作](https://en.wikipedia.org/wiki/Undefined_behavior)についての記事を読むと、[バッファオーバーフロー](HTTPSそのループを書くことのもう一つの方法です:// ENを.wikipedia.org/wiki/Buffer_overflow)を参照してください。すべての警告とデバッグ情報でコンパイルします( 'gcc -Wall -Wextra -g')。 **デバッガ** gdb'と[valgrind](http://valgrind.org/)を使用してください。次回、あなたがSOに関する質問をしたら、いくつかの[MCVE](http://stackoverflow.com/help/mcve)を出してください。この*私のコードを修正する*質問は話題外です。また、[malloc]と[scanf] –
の「何か」の[documentation](http://en.cppreference.com/w/c)も読んでください.... [mcve] 。 – Yunnosch
'm'、' n'、 'arr'の値(' for'ループのブレークポイントを持つ)をデバッガにチェックインしてください。私はあなたが驚くだろうと確信しています。 –