gpt4 book ai didi

C++ Arena 分配器可用内存总是一半

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:51:08 24 4
gpt4 key购买 nike

const int size = 50000;
char pool[size];

int freeMemory(void)
{
int freemem = 0;
for(int i = 0; i < size; i++)
{
if(pool[i] == NULL)
{
freemem++;
}
i++;
}

return freemem;
}

如果我调用 freeMemory(),返回的大小总是最初声明的一半。 25000 特别是这里即使我没有在池本身中初始化任何东西。为什么是这样?我需要先初始化一些东西吗?

void initialize(void)
{
//Don't quite understand if I need to initialize something here?
}

而且我也尽量避免使用 new 运算符。原因是我正在尝试手动管理池内的内存。

最佳答案

因为您的 for 循环中有一个额外的 i++; 语句。所以每次迭代实际上都会将迭代器递增两次,有效地使您只循环一半的时间。

删除 for 循环末尾的 i++; 行。

关于C++ Arena 分配器可用内存总是一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732768/

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