首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRT内存分配

CRT内存分配
EN

Stack Overflow用户
提问于 2012-05-04 02:55:55
回答 2查看 1.1K关注 0票数 0

我们的应用程序分配几何坐标的大std::vector<> -

它必须是一个向量(意思是连续的),因为它最终被发送到OpenGL来绘制模型。

Open处理连续数据。

在某个时刻,分配失败,这意味着保留内存会抛出std::bad_alloc异常。然而,在这个时刻,仍然有许多记忆是自由的。

问题是连续块不能被分配。

所以前两个问题是:

  • 有没有办法控制CRT分配内存的方式?或者整理它的方法(疯狂的想法)。
  • 可能有一种方法来检查运行时是否可以分配一定大小的内存块(不使用try/catch)。

通过将这个大向量分割成多个向量并为每个向量调用一次OpenGL,可以部分地解决上述问题。

然而,仍然存在一个问题,即如何定义每个较小向量的大小--如果有大量的向量具有相当小的大小,我们几乎可以肯定这是合适的内存,但是会有大量调用OpenGL,这会减慢可视化速度。

EN

回答 2

Stack Overflow用户

发布于 2012-05-04 07:19:29

在32位地址空间内,不能超过连续内存的~600 go。编译为64位,并在64位平台上运行它来解决这个问题(希望永远如此)。

尽管如此,如果您有如此苛刻的内存需求,则应该查看自定义分配器。您可以使用以磁盘为背景的分配,该分配将在矢量中显示为基于内存的存储。您可以为OpenGL映射文件。

票数 1
EN

Stack Overflow用户

发布于 2012-05-04 06:31:11

如果堆碎片确实是您的主要问题,并且运行在Windows上,那么您可能希望在http://msdn.microsoft.com/en-us/library/windows/desktop/aa366750(v=vs.85).aspx中研究低碎片堆选项

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10442078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档