gpt4 book ai didi

c++ - 为什么 bool 看起来占用的内存和 int 一样多? C++

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:36 25 4
gpt4 key购买 nike

当我在 dev cpp 运行这个程序时,任务管理器说它大约有 79 MB。使用 gnu c++ 4.7 的 Codeforces 说它是 79112 KB

#include<stdio.h>
const int N=10010,K=1010;
struct TPos
{
int charge;
bool ex;
TPos()
{
charge=1<<30;
ex=false;
}
};
TPos d[N][K];

int main()
{
while(1);
return 0;
}

但是当 ex parametr 被注释时:

#include<stdio.h>
const int N=10010,K=1010;
struct TPos
{
int charge;
//bool ex;
TPos()
{
charge=1<<30;
//ex=false;
}
};
TPos d[N][K];

int main()
{
//while(1);
return 0;
}

只有 39536 KB。我认为 boolean 值应该使用一个字节。为什么它的大小增加了一倍?

最佳答案

除非你打包一个结构,否则它总是占用可以被单词大小整除的内存(因为内存对齐)。例如,您可以在 gcc 中使用 __attribute__(packed) 来打包结构。另见 here .打包结构可能会减少所需的内存,但几乎肯定会减慢执行速度。

关于c++ - 为什么 bool 看起来占用的内存和 int 一样多? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20116857/

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