當我在dev cpp上運行這個程序時,任務管理器說它約爲79 MB。與GNU C++ 4.7 Codeforces說,這是79112千字節爲什麼布爾似乎佔用與int相同的內存? C++
#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;
}
但當前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。 我認爲布爾應該使用一個字節。爲什麼它的大小增加一倍?
[填充](http://en.wikipedia.org/wiki/Data_structure_alignment#Data_structure_padding) – BoBTFish
你可以嘗試__attribute__ ((packed))看看它是怎麼樣的(但通常不是性能的好習慣) – Leeor
如果你不需要所有int-bits用於charge,你甚至可以將內存需求減少到sizeof(int)。請參閱下面的答案。 (也許一個或多或少的2個主管的權力並沒有太大的差別。) – Tobias