2016-08-16 11 views
1

私はソケットで作業しており、TCPライブラリにアクセスすることはできません。クライアントが切断すると、オブジェクトのメモリは削除されますが、それはNULLになりません。それをどうやって確認できますか?C++削除されたポインタを確認する

コメントが正しく示したよう

Client is 0xddddddddddddddd

+5

'0xddd ... dd'は、メモリが(デバッグモードで)初期化されていないことを示します。あなたは 'NULL'に設定するのを忘れてしまったようです。 – CompuChip

+0

@CompuChipデバッグ版で同意します。リリースはユニット化されたデータを埋めません。 –

+2

コード/出力を投稿してください。 – slawekwin

答えて

0

、あなたが削除したポインタに対してチェックすることはできません。

Client != NULL => true 

は現在、私はクラッシュする次のことを、持っています。そのため、ポインタを削除すると、半分位のC++フレームワークでさえ教えてくれます。まともなフレームワークではスマートポインタを使用します。

ランダムにオブジェクトを削除するコードが見つかった場合は、回避策を探す代わりに置き換えます。これは、あなたがそのようなコードを持っている唯一の問題ではありません。

0

これは、ネットワークプログラミングで対処する必要がある典型的なケースです。他のコメントでは、ポインタが削除されたかどうかを検出できないと述べています。

私が個人的に使用している解決策は、接続が閉じられたときにshared_ptrです。refcountを減らし、接続の状態をclosedに設定します。

関連する問題