[英]How do I erase an element of vector without application crashing due to lack of memory?
所以這個問題很難用標題來解釋,所以這里是:
在我的 32 位應用程序中,我有一個點雲向量,例如,大小為 4000。假設點雲的每個元素中有 20 000 個點。
我希望能夠根據我的條件刪除點雲。
問題是,我的 4000 個元素幾乎已經達到內存使用限制(例如,如果我有 4500 個元素,我的應用程序就會崩潰)。
如果我在矢量大小為 4000 時刪除點雲,它會崩潰,如果它的大小較小(比如 2000 左右),它不會崩潰。
我的理論:擦除它時,它會在其他地方重新分配向量,但是當我接近內存限制時這樣做,它會達到內存上限並使我的應用程序崩潰?
有沒有辦法確保向量保持在那個“位置”而不是讓我的應用程序崩潰或任何其他解決方案?
提前致謝!
我不確定刪除向量元素,但我想建議您更改元素順序而不是重新分配。 我認為重新組織向量將花費更少然后重新分配新內存,並且在向量的末尾,您可以用 NULL 標記空位或持有表示向量實際大小的 var(在您的情況下刪除點后)實際大小為 3999)。 這樣你的分配只完成一次,你不需要再使用操作系統分配器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.