.NET dll(外部関数)を呼び出しているネイティブのC++アプリケーションがあります。管理対象の呼び出し時に割り当てられたスタック全体が割り当てられます/ stackリンカオプションを使用して指定されたスレッドの場合、ネイティブ関数呼び出しのみを行うと、計算に必要なスタックが割り当てられます。混在モードでのメモリ使用量が多すぎる
以下は80メガバイトに設定/スタックオプションを使用すると、および管理外部関数の呼び出しと私の観測
/stackオプションを1MBに設定し、管理外部機能を呼び出します。
/stackオプションを80MBに設定し、ネイティブ内部関数を呼び出します。
.Net外部関数を呼び出すと、GCに関連する余分なスレッドがいくつかあります。また、アプリケーション内のスレッドは.Net外部関数を呼び出さない場合と比較して、かなり多くのスタック領域を使用しています。管理スタックがネイティブスタックの上にあるかどうかはわかりません。誰かが私たちが.Net外部関数への呼び出しを行い、混合モードアプリケーションでのメモリ管理を行うときに、スレッドのフルスタックが割り当てられている理由を知ってもらえますか?