gpt4 book ai didi

C++ 对象内存管理

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:03 26 4
gpt4 key购买 nike

我想了解随着对象数量的增加,内存是如何分配的。以下测试程序创建了4亿个对象,其内存占用约为23GB。

为什么单个对象大小只有16字节,却占用这么大的内存。理想情况下,我假设它应该是 16 字节乘以 4 亿。

    struct class1 {
long long id;
double value=0.0;
class1(long long id) {
this.id = id;
}
};

for (int i=1;i<=400000000;i++) {
class1 *t = new class1(i);
}

最佳答案

如果问题是如何编写具有相同数量对象和减少内存占用的程序,答案是重载 new 和 delete 运算符并编写您自己的分配器,该分配器专门用于分配 16 字节的 block 大型游泳池。

通用分配器是低效的,因为它是通用的,并且在分配小对象时编写它是为了快速而不是节省内存。大多数程序不会通过数百万个小分配来强调机器容量。

关于C++ 对象内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com