在我将代码从纯 Windows 平台引入 GNU 编译器的工作期间,我注意到一些奇怪的行为,即未初始化的向量指针。
对应的代码如下所示:
typedef vector<IPeer*> Network;
// [...]
Network* m_network;
// [...]
if (m_network == NULL) // <-- this is the strange part
m_network = new Network();
标记线让我很难过。声明我的向量后,当我在 Windows 机器上编译它时它为 NULL。在使用 GNU Compiler 将代码移动到我的 Mac 之后(我正在编译) g++-5
,-std=c++11
我的向量在声明后似乎不再为 NULL。标记的行被跳过。
这是一个 c++ 标准实现问题还是这个奇怪的行为来自哪里?