基本上我想知道和之间的
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
似乎这两个整数分配在两个不同的内存位置。
gcnew Int32() 是否分配在托管堆中?还是直接在堆栈上?