【发布时间】:2016-03-26 19:43:30
【问题描述】:
在将代码从纯 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++ 标准实现问题还是这个奇怪的行为来自哪里?
【问题讨论】:
-
@BillLynch 谢谢,这是对我的问题的一个很好的深入解释。
标签: c++ c++11 visual-c++ g++5.1