[問題] variable bytes size limit
看板C_and_CPP (C/C++)作者karaokstar (卡拉歐科史達)時間13年前 (2013/06/08 20:08)推噓0(0推 0噓 3→)留言3則, 1人參與討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual Studio 2012
問題(Question):
大家好, 我有一個程式,
其中有用 std::set<pair<vector<int>, double>> 來存資料
在跑某些測資的時候, 程式都沒問題,
但跑有些測資, 程式會無預期中止且沒有error message
之前也會遇到這種情況, 但是是程式本身吃的memory太多, ex: 2G
但這次用工作管理員看, 程式都沒到達memory上限
後來檢查覺得有可能是不是 container 的到達上限, 程式直接停止
有問題的測資, 中止時set的size大概是8m多筆, 而且還沒有insert完
用 std::set::max_size() 看, 上限是10m,
不過是不是因為此 set 存放的 bytes 大小已達到上限,
所以才會造成類似程式memory吃到上限直接中止的狀況?
還是有什麼辦法知道我程式中止的原因是因為上述情況?
謝謝!
補充說明(Supplement):
或是有辦法得知程式中止前此 set 佔的 bytes 大小嗎?
類似 sizeof(set_name) ?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.28.216
※ 編輯: karaokstar 來自: 140.112.28.216 (06/08 20:35)
→
06/08 20:40, , 1F
06/08 20:40, 1F
→
06/08 20:41, , 2F
06/08 20:41, 2F
→
06/08 20:42, , 3F
06/08 20:42, 3F
不好意思, 我不太懂所謂 allocator 的意思
是自己分配 set 要存多少大小嗎? 有點像 new 的概念?
謝謝!
※ 編輯: karaokstar 來自: 140.112.28.216 (06/10 12:36)
typedef pair<vector<int>, double> PAIR;
我後來想說如果改成用 vector< PAIR > 來存
然後 vector.reserve() 是否可以達到一樣的效果?
但是我在 reserve(max_size()) 時, 他不給我reserve, 我想說vector是連續空間
應該比較沒有fragmentation的問題?
如果沒有reserve, 直接用vector.pushback() 存, 是存到 11958657 個之後程式就會停止
除了自己寫allocator之外有其他方法嗎?
謝謝
※ 編輯: karaokstar 來自: 140.112.28.216 (06/10 17:25)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章