c++ - 由于某种原因,我的 ram 上的 int 重量超过 32 位

标签 c++ windows visual-studio-2010 visual-c++ memory

好吧,我很好奇我的 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/

相关文章:

c++ - 代码在 Linux 上运行良好,但在 Windows 操作系统上提供不同的输出

c++ - 同时等待套接字和 bool var 的可移植 C++11 方法

windows - git-cheetah 多次修改路径环境变量

c++ - Doxygen 没有显示记录的成员函数(包括构造函数)是如何从其他类调用的。

c++ - C++中的 map ,可以接受任何类型的值

c++ - 使用 qt 模板时未解析的外部?

c# 根据 mySQL Workbench 中的项目数添加新按钮

visual-studio-2010 - VS2010工具栏中有解决方案配置但没有平台

html - 如何从 C++ 打开 URL?

c++ - 将无符号字符数组转换为整数