C ++ Arena Allocator Free Memory总是一半

时间:2013-03-31 18:14:13

标签: c++ memory-management

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(),返回的大小始终是最初声明的HALF。 25000特别在这里即使我没有初始化池本身的任何东西。为什么是这样?我需要先初始化一些东西吗?

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

我也试图避免使用新的运营商。原因是我正在尝试手动管理池中的内存。

1 个答案:

答案 0 :(得分:2)

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

删除for循环结束时的i++;行。