▼horさん
>int型が4バイトでbool型が1バイトだと思ったので、
>m_bModify,m_bBookMarkを両方bool型にした方がメモリ消費が少ないと思ったのですが・・・
>勘違いしてます? 初心者なので教えていただけると助かります。
boolのメモリ消費はsizeof(bool)を出力してみたところ,1バイトでした.
もう一つ考慮する点はメモリのAlignmentです.intはメモリ上で4の倍数のメモリ位置から配置されますので(オプションで変更できますけど,とりあえず一般論として),例えば sizeof(bool)==1,sizeof(int) == 4としたとき.
bool a; bool b; int c; だと a, bで各1バイト,隙間2バイト,cで4バイトの合計8バイト消費.
bool a; int c; bool b; だと aで1バイト,隙間3バイト,cで4バイト,bで1バイト,隙間3バイトの合計12バイト消費となると思います.
ここまで来ると好みの問題かもしれませんが,私はintを区切って使うのが好きです.ビデオのシールもはさみで切って使う位なので.(←単なる貧乏性 ^^;)
---
#include <stdio.h>
#define showsize(X) printf( "sizeof(" #X ") == %d\n", sizeof( X ))
int main()
{
struct A {
bool a;
bool b;
int c;
};
struct B {
bool a;
int c;
bool b;
};
showsize(char);
showsize(int);
showsize(bool);
showsize(long);
showsize(A);
showsize(B);
return 0;
}