Compartir a través de


Punteros en el sistema de tipos común

Actualización: noviembre 2007

Los punteros son clases especiales de variables. Hay tres tipos de punteros compatibles con el motor en tiempo de ejecución: punteros administrados, punteros no administrados y punteros a función no administrados.

Un puntero administrado, también conocido como identificador de un objeto en el montón administrado, es un nuevo tipo de puntero disponible para las aplicaciones administradas. Los punteros administrados son referencias a un bloque administrado de memoria del montón de Common Language Runtime. En este montón se realiza una recolección automática de elementos no utilizados. Los punteros administrados se generan para argumentos de método que se pasan por referencia. Algunos lenguajes proporcionan otras formas de generar punteros administrados. Sólo los punteros administrados son compatibles con CLS.

Nota:

En Visual C++ 2002 y Visual C++ 2003, __gc * se empleaba para declarar un puntero administrado. Esto se ha reemplazado por un ^ en Visual C++ 2005; por ejemplo ArrayList^ al = gcnew ArrayList();.

Un puntero no administrado es el puntero C++ tradicional a un bloque de memoria no administrado del montón estándar C++. Como los punteros no administrados no forman parte de CLS (Common Language Specification), ciertos lenguajes pueden no proporcionar sintaxis para definir estos tipos o tener acceso a ellos. Vea la documentación del lenguaje para obtener información sobre la compatibilidad con punteros no administrados.

Un puntero a función no administrado es también un puntero C++ tradicional que hace referencia a la dirección de una función. CLS proporciona delegados como alternativa administrada a los punteros no administrados.

No es necesaria la definición explícita de un tipo de puntero. Toda la información necesaria para determinar el tipo de un puntero está ahí cuando se declara el puntero.

Mientras que los tipos de puntero son tipos de referencia, el valor de un tipo de puntero no es un objeto y no se puede determinar el tipo exacto a partir de tal valor.

El sistema de tipos común proporciona dos operaciones de tipo seguro en los tipos de puntero: la carga de un valor desde una ubicación a la que hace referencia el puntero y la escritura de un valor en dicha ubicación. Estas operaciones de tipo seguro son compatibles con CLS.

El sistema de tipos común proporciona también tres operaciones aritméticas de dirección basadas en bytes en los tipos de puntero: agregar y sustraer enteros en los punteros y sustraer un puntero de otro. Los resultados de las dos primeras operaciones aritméticas devuelven un valor del mismo tipo que el puntero original. Estas operaciones basadas en bytes no son compatibles con CLS.

Vea también

Conceptos

Common Language Specification

Escribir código conforme con CLS

Otros recursos

Sistema de tipos comunes