がhow new works in C++上に読んで、私は次のコードを試してみました: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;
}
を、出力は常に "M = 0" です。 残存価額が表示されないのはなぜですか?どのようにすることができますか?
追加情報:5.4.0 20160609 on Ubuntu 16.04。 m
の-std = C++ 03、98と11の規格
0より42の残差が少なくなる理由は?また、「リリースモード」でコンパイルする必要があります。 – StoryTeller
メンバー変数の内容は* indeterminate *です。これを初期化する以外は、C++の[* undefined behavior *](http://en.cppreference.com/w/cpp/language/ub)です。 –
未定義の動作は定義されていません。それは本当に建設的ではありません。 –