1

私はC++を学んでおり、オブジェクトに割り当てられたメモリアドレスを一時的なアプリケーションレベルの識別子として使用するのが良い考えであるかどうか疑問に思っています。

4

3 に答える 3

2

あなたはそれをすべきではありません。ここで既に述べたことに加えて、アドレスが再利用され、基本的にポインターである ID が、古いオブジェクトが解放されると、他のオブジェクトによって再利用される可能性があるためです。たとえば、この ID を使用してセッション情報にアクセスする場合、他のユーザーのセッションにアクセス/変更する可能性が非常に高くなります。これは良いことではありません。ただし、スレッド ID、現在のシステム時間などの他の情報と組み合わせてアドレスを使用することはできます...

于 2012-07-05T00:23:45.727 に答える
2

それはおそらく最善の考えではありません。他に何もないとしても、オブジェクトを移動/クローンする将来の機能が大幅に制限されます。また、ID からオブジェクトを見つけるためにこれに依存すると、リスクが高まります。古い参照はクラッシュを引き起こす可能性があります。

于 2012-07-04T23:11:21.770 に答える
1

new() でオブジェクトを作成した場合、返されるオブジェクト インスタンス ポインターは事実上、オブジェクトです。明示的に dispose()d されるまで、アプリケーション識別子になります。私はスタック上にオブジェクトを構築しないようにしています。マルチスレッド化されたコードを書きすぎているため、あまりにも危険です。

明らかに、アドレスを ID として使用できないことはたくさんあります。たとえば、1 つをデクリメント/インクリメントして、先行/後続 ID を持つオブジェクトを指すことはできません。

于 2012-07-04T23:40:09.630 に答える