c++ - 如何在第一次使用之前将静态数组保留在内存之外

标签 c++ arrays pointers memory-management static

我是 C++ 的新手,所以我对静态数组的工作原理有些困惑。我知道在 C# 中,数组在首次访问之前不会放入内存中,如果您希望它可以立即访问,这可能会出现问题。但是,我正在努力将 Perlin 类转换为 C++,我希望有多个静态数组,其中只有一个可以在运行时使用,或者可以使用任意数量的数组。实际上,这并不是什么大的内存问题,因为它们都不超过 50kb,但是,我想知道是否有可能确保数组不会加载到内存中,除非我要求它。有没有办法确保在源代码中定义的静态数组不会被加载到内存中,除非被要求?这是一件非常挑剔的事情(尤其是 x64),但我更愿意尽可能地对其进行优化。我讨厌用不会被使用的东西占用内存的想法。

或者也许静态数组甚至都不是可行的方法 - 只是动态类对象包装数组?

我想真正的问题是:在 c++ 中实现可能不会全部使用的表查找的最有效解决方案是什么?

最佳答案

静态数组将在您的内存空间中,无法省略或释放它们,但这与“在内存中”不同。将其留给 Windows 虚拟内存管理器。当您第一次访问阵列时,Windows 会将它从磁盘带到 RAM 中。

关于c++ - 如何在第一次使用之前将静态数组保留在内存之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25072170/

相关文章:

c++ - 在哪里使用 std::span?

c++ - 合并两个列表 C++

c++ - 如何原子地重置 shared_ptr?

c - 为什么我的 C 结构必须添加一个奇怪的 int 并且它会影响指针?

c - C语言中如何为指针引用的变量分配内存?

c++ - 在 3D 场景中存储模型位置的好方法是什么?

arrays - 生成并显示分数系列

java - 使用Java删除数组中中间元素的上一个和下一个元素并缩小数组

python - 将返回一维数组的函数应用于 numpy 数组的所有元素

c - 为什么我不能在不返回根指针的情况下向我的树添加一个元素?