myObj* var = new myObj;
var = other1;
もう必要ない
delete var;
var = new myObj;
var = other2;
削除して再度割り当てる代わりに、逆参照できないのはなぜですか?
var->other2;
myObj* var = new myObj;
var = other1;
もう必要ない
delete var;
var = new myObj;
var = other2;
削除して再度割り当てる代わりに、逆参照できないのはなぜですか?
var->other2;
逆参照は削除を意味しません: http://en.wikipedia.org/wiki/Dereference
多くの語彙が実際に何を意味するのかを誤解しているように見えるので、C++ のチュートリアルをいくつか読むことをお勧めします。
グーグルを使用することを忘れないでください。
あなたの質問はばかげています。攻撃を意図したものではありません。言い換えれば、ここには根底にある混乱があり、問い合わせに対する単純な回答では対処できない.
C または C++ の入門書を読むことを強くお勧めします。Web には、優れた講義や無料の電子書籍があふれています。あなたはそれを後悔しません!
Google で検索してみてください :) たぶん、数日後に自分の質問に答えるために戻ってくるでしょう。
ハッピーコーディング!
他の人は、用語に関するあなたの混乱についてコメントしています。あなたのコードについてコメントします。
あなたがするとき:
myObj* var = new myObj;
var = other1;
あなたはメモリリークを作成しています。new myObj
構造体にメモリを割り当て、var
そこを指すように設定します。次に を再割り当てすると、var
割り当てられた構造体を指す変数がなくなります。C++ には自動ガベージ コレクションがないため、このメモリにはアクセスできなくなりますが、それを再利用するために使用できる変数もありませんdelete
。
var = other1
ポインタを再割り当てしますが、内容はコピーしません。構造をコピーする場合は、次のように記述する必要があります。
*var = *other1;
次に行う場合:
delete var;
元の構造を削除するのではなく、指定されたものをすべて削除other
します。これは、その構造が を使用して作成された場合にのみ有効ですnew
。
C++ のポインターに関するすべての教材に戻って確認する必要があります。