問題タブ [tracking-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
150 参照

.net - トラッキング リファレンスが更新されないのはなぜですか?

ienumerable とその内容を削除するためのきちんとした小さな関数を作成しました (最近発見したメモリ リークをプラグインするため):

...しかし、何らかの理由で、デバッガーでトレースすると、関数から戻ったときに、リストがまだ一部のメモリを指しているように見えDeleteEnumerableます。

追跡参照として渡すことで、渡すハンドルを変更する必要があると思いましたか? ここで何を見逃したのですか?


編集:より完全なテスト例...

これは少し更新されたディスポーザーです。

これは、ディスポーザーを呼び出すコードの簡略化された例です。

...そしてこれが出力です:

正直なところ、列挙可能なものを削除しても、中に含まれているオブジェクトを削除する必要があるかどうかはあまり心配していません。私たちはこれらのリストをいたるところで使用しており、リストが十分に迅速にクリーンアップされていなかったため、システムのメモリが不足していました。

さらに悪いことに、リスト追跡参照を nullptr に設定する関数に依存していましたDeleteEnumerableが、それらが返されたときに追跡参照が更新されたようには見えません。コンソール出力からわかるように、デバッガーの問題だけではありません。

私が理解していないのは、なぜ

0 投票する
2 に答える
544 参照

c++-cli - 追跡参照をクラス メンバーとして使用できないのはなぜですか?

次のコード:

Visual Studio で次のエラーが発生します。

エラー C3160: 'int %': マネージ クラスのデータ メンバーはこの型を持つことはできません

参照の追跡は管理されたものだと思っていましたが、管理されたクラスのメンバーになれないのはなぜですか? また、値型への参照を C++/CLI に正しく保存するにはどうすればよいですか?

0 投票する
2 に答える
793 参照

c# - 唯一の違いはrefによって渡されるパラメーターであるか、c++/cliではないオーバーロードされたc#関数を呼び出す方法

オーバーロードされたメソッドを含む C# クラス ライブラリがあり、1 つのメソッドには ref パラメーターがあり、もう 1 つのメソッドには値パラメーターがあります。これらのメソッドは C# で呼び出すことができますが、C++/CLI では正しく呼び出すことができません。コンパイラはこれら 2 つのメソッドを区別できないようです。

ここに私のC#コードがあります

と私の C++/CLI コード

C++ ではオーバーロード関数を宣言できないことはわかっていますが、関数シグネチャの唯一の違いは、一方がオブジェクトを受け取り、もう一方がオブジェクトへの参照を受け取ることですが、C# では宣言できます。

これは C# でサポートされている機能ですが、C++/CLI ではサポートされていませんか? 回避策はありますか?