En Visual C++ 2005, todos los tipos, sean nativos o gestionados, pueden ser creados en la pila, con una semántica de limpieza determinista basada en la pila. Para instanciar un objeto de tipo T que viva en el área de heap nativa, uso"new T". Esto devuelve un puntero a la ubicación del objeto en el área de heap nativa (concepto que hace referencia a un puntero __nogc en Visual Studio .NET 2002 y Visual Studio .NET 2003). Para instanciar un objeto de tipo T que debería vivir en el área de heap gestionada, Visual C++ 2005 presenta la nueva palabra clave gcnew. Invocando "gcnew T" retorna un handle a un objeto completo en el heap gestionado. Un handle es una nueva construcción introducida en Visual C++ 2005 que es parecida al puntero __gc de las extensiones gestionadas. Para instanciar un tipo T en la pila, la declaración estándar "T t;" es suficiente.
Reivindico mi derecho a la libertad de poder controlar dónde y cómo debe vivir un tipo al declararlo. Dentro o fuera de Matrix. Entre el calorcito de la pila o con el frío polar del área de heap. Compiladorcillos a mí…, digo.
Deja un comentario