2011-08-23 59 views

回答

0

第一個在非託管代碼空間中實例化堆棧上的對象。這是標準的c/C++行爲。編譯器知道對象的錯誤是以字節爲單位,並將curent函數中的堆棧指針移動到「分配」該內存。然後它會調用該類的構造函數。

後者在CLR託管堆上實例化對象,並且是Managed C++的一項功能。這裏對象是在CLR中創建和管理的。將CLR看作與Java虛擬機類似。

這裏有太多的解釋,但你需要了解.net(see this tutorial)和article on how the CLR creates Managed Objects,看看事情是如何不同。

託管C++是微軟推出的一組C++擴展,允許非託管和託管的世界進行互操作。還有其他的如COM和重用非託管DLL(P/Invoke)。託管C++使您可以更精確地控制互操作,並允許您使用C++語言編寫.net程序。

託管C++有很好的教程here。這試圖彌合世界。

+0

第一個只模擬堆棧語義 - 對象仍然分配在託管堆上(參考類型**總是**)。 – ildjarn

+0

@idljarn。當然,我明白你在說什麼。 –