07月13, 2007

C++中的字符串常量

int main(...)
{
          printf("hello world");
          printf("hello world");
}

你"猜",在内存中有几个"hello world"字符串?

我让100多号人回答这个问题,结果有3个答案: 0个,1个,2个

0个显然不对了

那么是1个,还是2个呢?

答案是: 不一定

这和编译器有关

看图

上面是VC6编译器产生的可执行文件a.exe (cl a.cpp) 下面是g++产生的a.exe,里面只有一份"hello world" (g++ a.cpp)

不同的编译器默认情况下对代码的优化程度不一样。 cl a.cpp /O1 (cl a.cpp /O2)产生的文件中也只有一份"hello world"~~

注:VC6 默认情况下Debug版本是 /Od Release版本是 /O2

本文链接:http://aztack.wang/post/string-literal-in-cpp.html

-- EOF--

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。