[問題] 記憶體的問題?

看板C_and_CPP作者 (壓力大)時間14年前 (2010/03/31 16:05), 編輯推噓11(11025)
留言36則, 10人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 程式跑不完就當了 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) dev c 我的情況是 我設了一個大小為100000的陣列 (請原諒我這樣做 我只會這樣= =) 然後開始跑case 小一點的case都沒問題 但是跑最大的那個就會當掉 但是我去細看 我的陣列用到第61930個時就會當掉 請問這是什麼意思呢? 還有就是 當我想宣告大小為110000的陣列時 程式就直接當掉了 請問這是他的規定嗎? 感謝= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.139.125

03/31 16:11, , 1F
應該是系統記憶體大小的問題吧...記憶體用完了就掛了
03/31 16:11, 1F

03/31 16:13, , 2F
為什麼會用到這麼大的陣列 @@
03/31 16:13, 2F

03/31 16:13, , 3F
新手十二誡的第十一條嗎?
03/31 16:13, 3F

03/31 16:15, , 4F
我也猜是記憶體的問題 但我好奇的是 位啥只會跑到61930就掛了
03/31 16:15, 4F

03/31 16:19, , 5F
甚麼 type ? 怎麼使用的, 只寫這樣是要大家隔空抓藥嗎? XD
03/31 16:19, 5F

03/31 16:21, , 6F
阿 抱歉 char 和 int
03/31 16:21, 6F

03/31 16:24, , 7F
是宣告區域變數嗎?
03/31 16:24, 7F

03/31 16:26, , 8F
還是資訊不足... XD
03/31 16:26, 8F

03/31 16:27, , 9F
那我隔空抓一下好了, 大概是用 int ptr 操作 char array ?
03/31 16:27, 9F

03/31 16:29, , 10F
第11戒 不可使用過大的STACK 看看至底那招能否救你
03/31 16:29, 10F

03/31 16:30, , 11F
救不了我...我成功宣告出200000大小的陣列了
03/31 16:30, 11F

03/31 16:30, , 12F
但是他一樣跑到69130時掛掉
03/31 16:30, 12F

03/31 16:30, , 13F
我覺得奇怪的是 演算法沒問題 可是跑太大的case會掛掉
03/31 16:30, 13F

03/31 16:30, , 14F
這樣是哪裡有問題呢? 抱歉 不是很會問問題
03/31 16:30, 14F

03/31 16:31, , 15F
^^
03/31 16:31, 15F

03/31 16:31, , 16F
那就用置底網站貼code吧....~_~
03/31 16:31, 16F

03/31 16:33, , 17F

03/31 16:33, , 18F
我的疑問是 因為每一個case只是資料多寡的問題
03/31 16:33, 18F

03/31 16:34, , 19F
不然就是我這種爛演算法只能處理小的case 吧
03/31 16:34, 19F

03/31 17:31, , 20F
有沒有先檢查過第61930那筆資料是正確的?
03/31 17:31, 20F

03/31 18:10, , 21F
先把小問題修一修 Line 11: for loop 超界
03/31 18:10, 21F

03/31 18:14, , 22F
Line 24, 邊改內容邊呼叫 strlen Line 23, 不保證有 "("
03/31 18:14, 22F

03/31 18:16, , 23F
應該檢查 strstr 回傳值, Line 57: output copy 完應該補零
03/31 18:16, 23F

03/31 18:17, , 24F
樓上 line23的錯 意思是?y
03/31 18:17, 24F

03/31 18:17, , 25F
strstr(inputtemp,"(") 如果回傳值是 NULL 呢
03/31 18:17, 25F

03/31 18:18, , 26F
會進入if的 一定會有( 測資的特性
03/31 18:18, 26F

03/31 18:19, , 27F
line57的錯是指要補\0嗎?
03/31 18:19, 27F

03/31 18:22, , 28F
yes
03/31 18:22, 28F

03/31 18:22, , 29F
or printf output[i] will be un-safe
03/31 18:22, 29F

03/31 18:23, , 30F
可是 strlen計算出來的長度 不就有包含了\0 ?
03/31 18:23, 30F

03/31 18:52, , 31F
至少附上一點程式碼吧 這樣問誰知道問題在哪...
03/31 18:52, 31F

03/31 18:52, , 32F
喔喔原來附在推文 XD 我眼殘
03/31 18:52, 32F

03/31 21:56, , 33F
strlen 算得出長度, 可能只是他往後跑到不知道哪裡的零
03/31 21:56, 33F

03/31 21:56, , 34F
算 strlen 它不會幫你加零啊
03/31 21:56, 34F

03/31 21:56, , 35F
當然也有可能是之前 stack 沒用過全是零, 但這並不保險
03/31 21:56, 35F

03/31 22:03, , 36F
==========改用 VS2008以上試試看...應該有意外結果
03/31 22:03, 36F
文章代碼(AID): #1Bim9Xq6 (C_and_CPP)
文章代碼(AID): #1Bim9Xq6 (C_and_CPP)