Grundsätzlich würde Ich mag den Unterschied zwischen
Int32^ i = gcnew Int32();
und
Int32* i2 = new Int32();
Ist Int32^i = gcnew Int32() auf verwaltetem Heap zugeordnet?
ich den folgenden Code geschrieben haben, wissen:
#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;
}
Es gibt die folgende Ausgabe:
004158B8 0
00E1002C 0
Es scheint Die zwei Integer werden an zwei verschiedenen Speicherplätzen zugewiesen.
Ist die gcnew Int32() in verwalteten Heap zugeordnet? oder direkt auf dem Stapel?