下記のソース その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;
}