我在初始化命名空间中的一些 const 对象时遇到了问题。我有一个如下命名空间:
namespace myNamespace{
const std::string HI = "Hi";
const std::string BYE = "Bye";
inline std::vector<std::string> createHiAndByeVector(){
std::vector<std::string> temp;
temp.push_back(HI);
temp.push_back(BYE);
return temp;
}
const std::vector<std::string> HI_AND_BYE = createHiAndByeVector();
}
如果我调试初始化,我可以看到两者HI
并BYE
获得字符串文字。继续执行到 initialziae HI_AND_BYE
,但是当我们进入createHiAndByeVector()
函数时,两者HI
都BYE
没有值了。push_back()
然后我在该方法中遇到分段错误。如果我查看调用堆栈,我会看到以下行:__static_initialization_and_destruction_0()
. 到底是怎么回事?我的对象在构建后会立即被销毁吗?