在constchar*上分配两次
const char* str ="Hello World!"
str = "HELLO!"
在此代码中,将字符串“Hello World!” 被从记忆中抹去还是会被留下?
回答
这不是由 C++ 标准指定的。您的编译器可以在这里做任何它想做的事情,包括甚至不首先存储原始字符串,并且只有效地编译以下代码:
const char* str = "HELLO!"
您的编译器可以证明执行此优化没有可观察到的效果,并且 C++ 标准允许 C++ 编译器实现任何没有可观察到的效果的优化。
所以这里发生的事情完全取决于你的 C++ 编译器。