繁体   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