【发布时间】:2014-09-24 04:21:15
【问题描述】:
我对 C++ 很陌生,所以我对静态数组的工作方式有些困惑。我知道在 C# 中,数组在第一次访问之前不会放入内存中,如果您希望它可以立即访问,这可能会出现问题。但是,我正在努力将 Perlin 类转换为 C++,并且我希望拥有多个静态数组,其中只有一个可以在运行时使用或任意数量。实际上,内存问题并没有那么大,因为它们都不会超过 50kb,但是,除非我要求,否则我宁愿知道是否可以确保数组不加载到内存中。有没有办法确保源代码中定义的静态数组不会加载到内存中,除非被要求?这是一件非常挑剔的事情(尤其是 x64),但我希望尽可能对其进行优化。我讨厌用不会被使用的东西占用内存的想法。
或者也许静态数组甚至不是要走的路 - 只是动态类对象包装的数组?
我想真正的问题是:在 C++ 中实现表查找的最有效解决方案是什么?
【问题讨论】:
-
如果您将数组设为
const数组(带有任何子对象const),那么它们可以存在于代码区域中,即它们不需要任何额外的内存分配。可执行文件的代码区将映射到进程的虚拟地址空间,可以直接从中读取内容。 -
所以静态 const 数组比静态更快?对我来说,编译的程序是魔法巫术的东西(即我不太了解底层编译结构)。程序的编译代码在程序执行时完全加载到内存中?没有磁盘访问?
-
它取决于系统。我只知道我熟悉的那些细节(不是 x86 类型系统!)
标签: c++ arrays pointers memory-management static