###前提・実現したいこと
C++CLIで作成したライブラリをC#から引数を渡して読み込む処理を行っています。
開発したプログラムをC#にて以下のエラーメッセージが発生しました。
###発生している問題・エラーメッセージ
ハンドルされない例外が 0x00007FF939DC775F (ntdll.dll) で発生しました(~.exe 内): 0xC0000374: ヒープは壊れています。 (パラメーター: 0x00007FF939E286B0)
###該当のソースコード
C#
1 int intA = 10; 2 IntPtr WIntPtr1 = new IntPtr(); 3 WIntPtr1 = Marshal.AllocHGlobal(Marshal.SizeOf(intA)); 4 Marshal::StructureToPtr(intA, WIntPtr1, false); 5 int B = CPPLIBRARY.WSetInt(WIntPtr);
###試したこと
調べてみたところ、「不正なメモリアクセスによるヒープ破損」が原因だと見当をつけたのですが、毎回同じ箇所で起こるわけではなく、C++やC#のどっちの処理でも発生したり、次に実行したときは同じ箇所で発生しなかったりします。
プログラム中は、Marshal.AllocHGlobalやMarshal.StructureToPtrで用意したIntPtr変数、またはC++CLI内でgcnewしたリストなどを引数としてC++のライブラリに渡す処理を数十個ほど行っているのでそのせいかなとは思うのですが、どうアプローチしていいかわかりません。
これが何故起こったり起こらなかったりするのか、解決するためにはどうしたらいいか、解決方法や原因をどう調べたらいいでしょうか。
###補足情報(言語/FW/ツール等のバージョンなど)
環境はWindows10のVSCommunity2017Ver15.2です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。