簡體   English   中英

如何在不因內存不足而導致應用程序崩潰的情況下擦除矢量元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM