C++のdelete演算子を理解しようとしています。C++で新しい演算子と削除演算子の背後にある論理を理解してください
私はポインタとnew演算子を使用しての背後にある論理を理解することができ、まだ私は「は、delete演算子は、動的変数を排除し、動的変数は軟石に占有するメモリを返します。」P517、問題はCで解決することを理解++第9版。
私は第3のcoutステートメントには合わないと思います。私は第3のcoutステートメントが最初のものと同様のsthであることを期待しました。
int main() {
int *p1;
cout << "p1 address: " << &p1 << " and points to the address "<< p1 << " which has the value: " << *p1<< endl;
p1 = new int;
cout << "p1 address: " << &p1 << " and points to the address "<< p1 << " which has the value: " << *p1<< endl;
delete p1;
cout << "p1 address: " << &p1 << " and points to the address "<< p1 << " which has the value: " << *p1<< endl;
cout << endl;
return 0;
}
私は:)任意の説明をお願い申し上げます)
ポインタの値は変更されません。あなたは何を期待しましたか?削除後のポインタを使用するbtwは – Incomputable
を呼び出します。これらの出力はすべてUBです。初期化されていないポインタを最初に表示して逆参照し、2番目に未初期化変数を読み取ります。 – BeyelerStudios
私はそれが指しているメモリアドレスが異なる値を持つと予想しました。あたかもポインタが初期化されていないかのように! – Zingo