私のホームページ:http://www.tommstudio.com/
Delphiプログラミングでは、すべてのオブジェクトをアンインストールすることでメモリリークを避ける必要があります。ただし、プログラムに注意を払わない場合は、同じオブジェクトを複数回元に戻すのは簡単です。これにより、深刻なエラーが発生し、アプリケーションがクラッシュしたりクラッシュしたりします。
次のプログラムをご覧ください。
|
上記の例では、button3.freeに実行するとエラーが生成されます。Button2はButton2.freeを呼び出すときにキャンセルされますが、Button2はButton3のホストであり、Button3も同時にキャンセルされます。
上記のエラーを回避するには、2つの方法があります。最初に、ホストが削除される前にホストがあるすべてのコンポーネントを削除します。この方法は非常にシンプルで、Button2.freeとButton3.を転送するだけで、上記の例ではフリーです。次に、button3変数をbutton33の前にnilに設定します。フリーが実行されます。手順は次のとおりです。
|
上記のプログラムでは、button3にnilに設定することは、アプリケーションが無効なオブジェクトのメモリを再利用しないようにするためです。フリーオブジェクトメソッドを呼び出すと、オブジェクトがゼロである場合、オブジェクトがまだ存在するかどうかを決定し、オブジェクト参照を使用してメモリを割り当ててから、オブジェクトメモリをフリーしてクリアします関連する仮想オブジェクトメソッドデータテーブル情報。 Destrowは、オブジェクトが存在する場所でメモリアドレスに変更を加えないため、Destroyを呼び出した後にメモリアドレスをテストした場合でも有効な場合があります。したがって、オブジェクトがnilにオブジェクト参照を設定せずにプログラムで2回呼び出される場合、オブジェクト参照は、アンインストールされる前にオブジェクトが占有するメモリアドレスを参照します。これがエラーの理由です。
もちろん、実際の開発プロセスでは、ほとんどのエラーはそれほど明白ではなく、解決策は詳細に従って決定されるべきであり、問題を簡単に追加して問題は解決しません。ここでは、具体的なことを誘惑する役割を果たしているプログラミングのアイデアを説明しています。