基本的に と の違いを知りたい
Int32^ i = gcnew Int32();
です
Int32* i2 = new Int32();
私は次のコードを書きました:
#include <stdio.h>
#using <mscorlib.dll>
using namespace System;
int main(void) {
Int32^ i = gcnew Int32();
Int32* i2 = new Int32();
printf("%p %d\n", i2, *i2);
printf("%p %d\n", i, *i);
return 0;
}
次の出力が得られます。
004158B8 0
00E1002C 0
2 つの整数が 2 つの異なるメモリ位置に割り当てられているようです。
gcnew Int32()はマネージド ヒープに割り当てられていますか? またはスタックに直接?