下記のソース その1をリリースモードでコンパイルすると24kbyteのexeファイルができました
その後 その2を同じくリリースモードでコンパイルしましたが同じ24kbyteでした
新しく A::b[DEF_SIZE] の実体を定義したので、その2ではできあがる実行ファイルのサイズが
増えると見込んでいたのですが そうではなかったみたいでした
とすると A::a[DEF_SIZE} も A::b[DEF_SIZE} も exe ファイルには埋め込まれてないと推測できます
するとこの変数はどこに実体があるのでしょうか?
コンパイラはVC6.0 です
//-----------------その1-------------------------- #include <stdio.h> #define DEF_SIZE 10000000 class A { public: static int a[DEF_SIZE]; }; int A::a[DEF_SIZE]; int main() { return 0; } //--------------------その2--------------------------- #include <stdio.h> #define DEF_SIZE 10000000 class A { public: static int a[DEF_SIZE]; static int b[DEF_SIZE]; }; int A::a[DEF_SIZE]; int A::b[DEF_SIZE]; int main() { return 0; }