[問題] 請問為什麼我這樣程式會當掉

看板C_and_CPP作者 (美麗新世界)時間11年前 (2014/06/08 14:44), 編輯推噓4(409)
留言13則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) iostream 問題(Question): http://truth.bahamut.com.tw/s01/201406/d465beda80ee55634255f10bd8ee87ce.JPG
餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> using namespace std; int main(){ int *arr; int m=0,n=0,y,u,z; //m=列 n=直 cin>>m>>n; y=n; u=n; z=n; arr=new int[m*n]; for(int i=0;i<n;i++) arr[i]=1; for(int j=0;j<m;j++){ arr[y]=1; y=y+n; } for(int j=1;j<m;j++){ for(int i=1;i<n;i++){ arr[i+u]=arr[i+u-1]+arr[i+u-z]; }u=u+n;} for(int i=0;i<m*n;i++) { cout<<arr[i]<<" "; if(i!=0&&(i+1)%n==0) cout<<endl; } delete []arr; return 0; } 補充說明(Supplement): 如題 把delete[]arr;這行刪掉倒是不會當掉 好奇怪喔 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.86.201.154 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1402209865.A.2DA.html

06/08 15:02, , 1F
你的排版實在太神奇了
06/08 15:02, 1F

06/08 15:08, , 2F
arr[i+u]=arr[i+u-1]+arr[i+u-z];
06/08 15:08, 2F

06/08 15:08, , 3F
你這部份有問題
06/08 15:08, 3F

06/08 15:16, , 4F
恩我研究一下
06/08 15:16, 4F

06/08 15:31, , 5F
題目說要用new動態分配記憶體,而非直接宣告成區域變數
06/08 15:31, 5F

06/08 15:33, , 6F
delete是用在刪除動態配置的空間,不是用在事先配置的空間
06/08 15:33, 6F

06/08 15:39, , 7F
原po有用new沒錯啊
06/08 15:39, 7F

06/08 15:52, , 8F
基本上你那會當掉的原因就是你指標寫入到超出範圍
06/08 15:52, 8F

06/08 15:59, , 9F
http://ideone.com/6LaTdr 你參考看看吧
06/08 15:59, 9F

06/08 16:04, , 10F
for (int j = 1; j < m; j++) ....
06/08 16:04, 10F

06/08 16:14, , 11F
sorry...沒看到new...
06/08 16:14, 11F

06/08 16:23, , 12F
第14行照feis大大說的改就可以了..感謝各位
06/08 16:23, 12F

06/19 07:57, , 13F
大於64k
06/19 07:57, 13F
文章代碼(AID): #1Jb0P9BQ (C_and_CPP)