阅读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标准进行编译
答案 0 :(得分:3)
m
的值未指定,可能是1337
或0
,就像您的情况一样。这并不意味着0
不是剩余价值(它与任何其他数字一样残留),你永远不应该依赖于此。
在实践中可能发生的事情是你在调试中进行编译,编译器在给你之前将所请求的字节清零。