我有這種事:分段故障而使用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,它接受的第一個五年號碼,並提供了有關分段錯誤第六個數字。我在循環之後立即嘗試打印內容,但沒有打印,不知道問題可能是什麼?我廣泛使用了類似的構造,從未遇到過問題。
編輯1: 該問題後來在程序中,但事情是我在循環後立即有一個printf,並沒有打印任何東西,所以我認爲它必須在這裏。爲什麼printf沒有打印什麼?它與平行執行有關嗎?對於壞格式抱歉,我是堆棧溢出新手。
閱讀有關[未定義行爲(https://en.wikipedia.org/wiki/Undefined_behavior)和[緩衝區溢出(HTTPS的另一種方式:// EN .wikipedia.org /維基/ Buffer_overflow)。編譯所有警告和調試信息('gcc -Wall -Wextra -g')。 **使用調試器**'gdb'和[valgrind](http://valgrind.org/)。下次你在SO上提出一些問題時,請給出一些[MCVE](http://stackoverflow.com/help/mcve)。這*修復我的代碼*問題是脫離主題。另請閱讀[文檔](http://en.cppreference.com/w/c),特別是'malloc'和'scanf' –
「這類東西」....請研究[mcve] 。 – Yunnosch
在調試器中檢查'm','n','arr'的值(在'for'循環中有斷點)。我相信你會感到驚訝。 –