#include <iostream>
#include <string>
#include <memory>
struct Data1
{
std::string str1;
std::string str2;
std::string str3;
int a;
int b;
double c;
};
struct Class1
{
Data1 data1;
int num1;
int num2;
int num3;
};
struct Class2
{
std::unique_ptr<Data1> pData1;
int num1;
int num2;
int num3;
};
struct Data2
{
int a;
int b;
int c;
};
struct Class3
{
std::unique_ptr<Data2> pData2;
};
int main(void)
{
Data1 a;
Class1 b;
Class2 c;
std::unique_ptr<Class1> d;
std::unique_ptr<Class2> e;
std::cout << "Data1 size: " << sizeof(a) << std::endl;
std::cout << "Class1 size: " << sizeof(b) << std::endl;
std::cout << "Class2 size: " << sizeof(c) << std::endl;
std::cout << "pClass1 size: " << sizeof(d) << std::endl;
std::cout << "pClass2 size: " << sizeof(e) << std::endl;
Data2 f;
Class3 g;
std::cout << "Data2 size: " << sizeof(f) << std::endl;
std::cout << "Class3 size: " << sizeof(g) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWVtb3J5PgoKCnN0cnVjdCBEYXRhMQp7CglzdGQ6OnN0cmluZyBzdHIxOwoJc3RkOjpzdHJpbmcgc3RyMjsKCXN0ZDo6c3RyaW5nIHN0cjM7CglpbnQgYTsKCWludCBiOwoJZG91YmxlIGM7Cn07CgpzdHJ1Y3QgQ2xhc3MxCnsKCURhdGExIGRhdGExOwoJaW50IG51bTE7CglpbnQgbnVtMjsKCWludCBudW0zOwp9OwoKc3RydWN0IENsYXNzMgp7CglzdGQ6OnVuaXF1ZV9wdHI8RGF0YTE+IHBEYXRhMTsKCWludCBudW0xOwoJaW50IG51bTI7CglpbnQgbnVtMzsKfTsKCnN0cnVjdCBEYXRhMgp7CglpbnQgYTsKCWludCBiOwoJaW50IGM7Cn07CgpzdHJ1Y3QgQ2xhc3MzCnsKCXN0ZDo6dW5pcXVlX3B0cjxEYXRhMj4gcERhdGEyOwp9OwoKaW50IG1haW4odm9pZCkKewoJRGF0YTEgYTsKCUNsYXNzMSBiOwoJQ2xhc3MyIGM7CglzdGQ6OnVuaXF1ZV9wdHI8Q2xhc3MxPiBkOwoJc3RkOjp1bmlxdWVfcHRyPENsYXNzMj4gZTsKCQoJc3RkOjpjb3V0IDw8ICJEYXRhMSBzaXplOiAiIDw8IHNpemVvZihhKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIkNsYXNzMSBzaXplOiAiIDw8IHNpemVvZihiKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIkNsYXNzMiBzaXplOiAiIDw8IHNpemVvZihjKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgInBDbGFzczEgc2l6ZTogIiA8PCBzaXplb2YoZCkgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJwQ2xhc3MyIHNpemU6ICIgPDwgc2l6ZW9mKGUpIDw8IHN0ZDo6ZW5kbDsKCQoJRGF0YTIgZjsKCUNsYXNzMyBnOwoJc3RkOjpjb3V0IDw8ICJEYXRhMiBzaXplOiAiIDw8IHNpemVvZihmKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIkNsYXNzMyBzaXplOiAiIDw8IHNpemVvZihnKSA8PCBzdGQ6OmVuZGw7CgkKCQp9Cgo=