私は少しの間 .NET と C++ を使用してきましたが、確かにポインターを使用する初心者ではありません (ただし、HANDLES がメモリ内でどのように使用されているかは完全にはわかりません)。
私の大きな懸念は次のとおりです。カスタム フォーム (閉じるボタン) に画像をレンダリングするコードを少し書きました。ボタンがホバーされるたびに、プログラムがタスクマネージャーでより多くのメモリを消費することがわかりました。
サインインボタンにも同様の問題があります。コードは以下のとおりです。
private: void signinbutton_VirtualPaint() {
if(in_signin && !on_signin) //variables for if the mouse is in range
signinbutton->BackgroundImage = img_signin_hover;
else if(in_signin && on_signin)
signinbutton->BackgroundImage = img_signin_click;
else
signinbutton->BackgroundImage = img_signin;
}
イメージは次のように定義されます。
img_signin = (cli::safe_cast<System::Drawing::Image^ >(rm->GetObject("btn_signin")));
Resources::ResourceManager
オブジェクトの使用。そのボタンにカーソルを合わせると、ますます多くのメモリが消費されます (増加はわずかですが、発生します)。
'gcnew'
これにより、私はオブジェクトについて疑問に思いました。gcnew
オブジェクトで削除を呼び出す必要がありますか? のようなものはimg_signin
どうですか?多くの .NET オブジェクトと関数が原因でメモリ リークが発生していると考えられるようになりましたが、この領域にどのようにアプローチすればよいかわかりません。