[問題] segmentation fault的問題

看板C_and_CPP (C/C++)作者 (zrae)時間10年前 (2015/08/26 20:46), 編輯推噓3(3020)
留言23則, 3人參與, 最新討論串1/1
各位大大好 先附上 code: http://codepad.org/7EM6HVr7 input : 1 3 5 3 1 3 4 6 1 2 3 4 1 3 4 5 0 <--則結束 output : 同上 ---------- 我用gdb 發現錯誤在 getline那個部分 但上stackOverflow 看到好像也有人這樣用 一直不知道錯在哪 鬼打牆 希望大大們給點提示QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.219.136.197 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1440593204.A.E3C.html

08/26 20:50, , 1F
vector<string> getData()
08/26 20:50, 1F

08/26 20:50, , 2F
{
08/26 20:50, 2F

08/26 20:50, , 3F
vector<string> inpt;
08/26 20:50, 3F

08/26 20:50, , 4F
string temp;
08/26 20:50, 4F

08/26 20:51, , 5F
while( getline(cin, temp) )
08/26 20:51, 5F

08/26 20:51, , 6F
{
08/26 20:51, 6F

08/26 20:51, , 7F
inpt.push_back(temp);
08/26 20:51, 7F

08/26 20:51, , 8F
if (temp == "0") {
08/26 20:51, 8F

08/26 20:51, , 9F
return inpt;
08/26 20:51, 9F

08/26 20:51, , 10F
}
08/26 20:51, 10F

08/26 20:51, , 11F
}
08/26 20:51, 11F

08/26 20:52, , 12F
}
08/26 20:52, 12F

08/26 20:52, , 13F
對於 vector 的操作,如果沒有先 resize() 是不可以直
08/26 20:52, 13F

08/26 20:53, , 14F
接塞資料的,不管 index 是多少都不行,改用 push_back
08/26 20:53, 14F

08/26 20:53, , 15F
就可以解決了
08/26 20:53, 15F

08/26 20:55, , 16F
當然,除非原本 vector 的 size 就不為 0 就可以放資料
08/26 20:55, 16F

08/26 21:03, , 17F
先 resize 直接塞資料,仍須注意是否有 out of range
08/26 21:03, 17F

08/26 21:20, , 18F
不對吧,vector當然可以直接塞資料,這個問題是出在
08/26 21:20, 18F

08/26 21:20, , 19F
變數生命週期,不能這樣 return 區域變數
08/26 21:20, 19F

08/26 21:21, , 20F
對不起我看錯了 你是複製一份 請無視上面的推文 囧
08/26 21:21, 20F

08/26 21:22, , 21F
樓上是對的,要用push_back,抱歉我剛沒看原po的code
08/26 21:22, 21F

08/26 21:24, , 22F
太丟臉了,讓我死了吧 XDDD
08/26 21:24, 22F

08/26 22:27, , 23F
感謝兩位大大的解惑 ><
08/26 22:27, 23F
文章代碼(AID): #1LtRKquy (C_and_CPP)
文章代碼(AID): #1LtRKquy (C_and_CPP)