好吧,我很好奇我的 ram 上的 int 是否真的占 4 个字节。
所以我用这段代码做了 1,000,000 个整数。
for(int i = 0;i < 1000000;++i)
int *as= new int;
在我执行这行代码之前,我在前面放置了一个断点,以查看我开始时有多少 headover。
几乎没有头绪,我的程序从 750 kb 开始。
但在我完成循环后,如果一个 int 的重量为 32 位,程序本应为 4,000 kb,则该程序使用 32,000 kb。
另一件值得一提的事情是,我正在使用 ctrl + altk + delete 方法来检查我的程序从 ram 中占用了多少空间,并且我在可视化上运行它C++ 2010 表达。
我也确信我电脑上的 int 是 32 位而不是 64 位,但这并不重要,因为即使它是 64 位而不是 32 位,它也应该是 8,000 kb 而不是 32,000 kb。
所以也许你可以尝试在你的电脑上这样做,然后告诉我你是否有相同的结果。
如果你知道我错在哪里,请告诉我。
最佳答案
4 字节的内存块太小,不值得管理。提供共享缓存行的可能不相关的代码对象 block 也可能导致性能损失。
典型的内存管理器的最小块大小在 16 到 256 字节之间。此外,通常需要一些开销来跟踪已分配特定大小的 block 这一事实。
关于c++ - 由于某种原因,我的 ram 上的 int 重量超过 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631194/