[問題] 程式不穩定是哪裡出了錯呢?

看板C_and_CPP (C/C++)作者 (兌現承諾)時間15年前 (2010/11/29 20:54), 編輯推噓9(9017)
留言26則, 8人參與, 最新討論串1/1
我用的編譯器是visual c++ 2010, 程式有時候可以順利執行,有時候執行途中會跳出錯誤訊息, 兩者的機率大概各半。 總不能故意視而不見吧? 魔鬼藏在細節裡 = = 。 錯誤訊息應該是在跟我說vector的容量爆了, 請見縮圖 http://ppt.cc/cQGY 。 暫時找不出哪錯了? 也許該學一下debug的功能看有沒有幫助。 有人有相同的經驗嗎?怎麼處理呢? 謝謝回覆。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.118.55.34

11/29 20:56, , 1F
魔鬼藏在細節裡,然後,細節也藏在你電腦裡
11/29 20:56, 1F

11/29 21:03, , 2F
光靠這張圖就能回答你的,應該是超人了
11/29 21:03, 2F

11/29 21:03, , 3F
推樓上 郭台銘名言!!
11/29 21:03, 3F

11/29 21:05, , 4F
11/29 21:05, 4F

11/29 21:07, , 5F
程式有點大,所以沒有貼程式碼。我再找找看,
11/29 21:07, 5F

11/29 21:08, , 6F
不行的話再貼程式碼求助。謝謝囉! (那不是郭的名言)
11/29 21:08, 6F

11/29 21:09, , 7F
11/29 21:09, 7F

11/29 21:14, , 8F
跟本文無關,有人能用gcc編譯這個嗎 codepad.org/ToWx2
11/29 21:14, 8F

11/29 21:15, , 9F
重寫一個比較快
11/29 21:15, 9F

11/29 21:21, , 10F
完整網址是這個嗎? http://codepad.org/ToWx2Dsj
11/29 21:21, 10F

11/29 21:23, , 11F
就是那個,我用gcc編可以過,不知新一點的版本行不行
11/29 21:23, 11F

11/29 21:31, , 12F
gcc (tdm-1) 4.5.1,不能過;原PO你的 call stack 寫什麼
11/29 21:31, 12F

11/29 21:32, , 13F
跳出那張圖,按下中止後的呼叫堆疊內容寫什麼
11/29 21:32, 13F

11/29 23:35, , 14F
你是不是玩 STL vector 玩過火了?上面顯示用到超過範圍。
11/29 23:35, 14F

11/29 23:37, , 15F
通常用到超出陣列範圍,都會顯示這一類的錯誤警告訊息。
11/29 23:37, 15F

11/29 23:41, , 16F
回 love 大 gcc (tdm-1) 4.5.0 不能過, 因為漏掉分號
11/29 23:41, 16F

11/30 01:17, , 17F
找到了呀!container的編號算錯了,所以出錯!
11/30 01:17, 17F

11/30 01:18, , 18F
編譯器的訊息還蠻可靠的齁!
11/30 01:18, 18F

11/30 01:18, , 19F
容器不是該用迭代器來跑嗎?
11/30 01:18, 19F

11/30 01:19, , 20F
會時對時錯是因為在有些情況下編號算對了,有些case
11/30 01:19, 20F

11/30 01:20, , 21F
又算錯了!
11/30 01:20, 21F

11/30 01:20, , 22F
用 vector::at() 吧...
11/30 01:20, 22F

11/30 01:20, , 23F
vector可以用 []對吧?
11/30 01:20, 23F

11/30 01:23, , 24F
可以用是可以用, 但是你又不能確保跑算出來的索引是合
11/30 01:23, 24F

11/30 01:24, , 25F
法的, 所以用了就很危險, 至少 at() 還會丟例外告訴你
11/30 01:24, 25F

11/30 01:24, , 26F
存取違規
11/30 01:24, 26F
文章代碼(AID): #1Cyw9mgt (C_and_CPP)
文章代碼(AID): #1Cyw9mgt (C_and_CPP)