deleteしたときに0代入
Posted: 2006年6月06日(火) 10:44
newしたオブジェクトをdeleteした後、そのオブジェクトに不正にアクセスしてしまうミス、経験された方はいらっしゃいますでしょうか。
メモリ管理の関係で、deleteした後はそのオブジェクトポインタ変数が指し示すメモリの内容は不明瞭なものになります。よって、アクセスすると場合によって強制終了してしまうという、デバッグが非常に困難な問題になりかねません。
例えば、下記のようなケースがこの問題に当てはまります。
このような場合には、確実に例外を発生させたいのです。
そこで、Ver5.0からはdeleteのときに自動的に0を代入してやるのはどうかと考えているのですが、いかがでしょうか。
deleteした後のオブジェクトポインタの活用方法は私の知る限り一つも見当たりませんが、何か弊害などありそうだと思う方、ご意見いただけると助かります。
メモリ管理の関係で、deleteした後はそのオブジェクトポインタ変数が指し示すメモリの内容は不明瞭なものになります。よって、アクセスすると場合によって強制終了してしまうという、デバッグが非常に困難な問題になりかねません。
例えば、下記のようなケースがこの問題に当てはまります。
コード: 全て選択
Class CTest
a As Long
End Class
Dim pobj As *CTest
pobj=New CTest
'何らかの処理
delete pobj
'コードミスにより、不正なメンバにアクセス
pobj->a=10
このような場合には、確実に例外を発生させたいのです。
そこで、Ver5.0からはdeleteのときに自動的に0を代入してやるのはどうかと考えているのですが、いかがでしょうか。
deleteした後のオブジェクトポインタの活用方法は私の知る限り一つも見当たりませんが、何か弊害などありそうだと思う方、ご意見いただけると助かります。