刚看到《程序员面试宝典》中有一个表达式说sizeof(string)大小是4,感到很是诧异,因为string容器的大小和string的实现有关,string类不是内置数据类型,而是一个模版类,所以它的大小和类的实现有关,具体我做了以下测试:
//source
cout<<sizeof(string) <<endl;
cout<<sizeof(vector<char>)<<endl;
//编译器:VS2008
//平台:X86
//outcome
32
20
//编译器:gcc 4.1.2
//平台:X86
//outcome
4
12
//编译器:gcc 4.1.2
//平台:X86_64
//outcom
8
24
由上面可知string类在不同的库中以及不同的平台下,长度是不一样的。在测试string的同时测试了vector容器的大小,同样可以得出上面的结论
由此可知《程序员面试宝典》中说sizeof(string)大小是4是有问题的。