C++ 为什么我会得到成员的意外零初始化?

C++ Why do I get unexpected zero-initialize for member?

阅读 how new works in C++ 我尝试了以下代码:

#include <iostream>

using namespace std;
struct A { int m; }; // POD
int main()
{
    A* a = new A;
    cout<<"A m="<<a->m<<endl;
    return 0;
}

并且输出总是"A m=0"。 为什么不显示残值,如何显示?

其他信息:在 Ubuntu 16.04 上使用 5.4.0 20160609。尝试使用 -std=C++ 03、98 和 11 标准进行编译

m 的值未指定,可能是 13370,如您的情况。这并不意味着 0 不是残值(它和任何其他数字一样是残值),您永远不应该依赖于此。

实践中可能发生的情况是,您在调试中进行编译,编译器在将请求的字节提供给您之前将其清零。