gpt4 book ai didi

c++ - 为 char 和 double 或 int 动态分配的内存占用相同的数量?

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

#include <iostream>

int main () {
double *data = new double;
size_t count = 0;
try {
while (true) {
data = new double;
count++;
}
} catch (...) {
std::cout << count;
}
}

这给输出一个像 2*10^8 这样的数字(循环工作了多少次,所以释放了多少双倍大小的内存...)。然后我将 double 更改为 char,我期待count 必须至少是 double 的 4 倍。但我很惊讶,计数就像双倍(不完全是 RAM 使用的原因)。我搜索了很多,找到了一些关于对齐的东西。但是,这一切都与结构有关。谁能解释为什么事情会这样。是否可以为 int 或 double 或 char 设置对齐方式。

最佳答案

在编写内存分配器时,有许多不同的选择,具体取决于您要优化的用法。

可以编写一个内存分配器,为每个分配的字节使用略多于一个字节,但这会对分配/释放时间产生影响。例如,我可以考虑位图页面允许消耗大约 9 位加上分配的每个 8 位字符的一小部分。

通常,出于性能原因,内存分配器有一个最小块大小,任何内存请求都会四舍五入到该大小的下一个倍数。此外,在内存块本身之前存储已分配内存的大小也很常见,这也会加起来。

关于c++ - 为 char 和 double 或 int 动态分配的内存占用相同的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27666741/

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