operador new
Su utilización exige que el usuario declarare un puntero del tipo adecuado; acontinuación debe ser inicializado con el valor devuelto por el operador. Si el objeto creado es tipo T, sería algo así (más detalles a continuación ):
T* puntero = valor-devuelto-por-el-operador;
En laexpresión
new ClaseC;
el operador new intenta asignar un espacio de tamaño sizeof(ClaseC) en la zona de memoria dinámica ( 2.2.6). A continuación intenta crear en esta posición una instancia de laclase utilizando el constructor adecuado. Como resultado de estas dos operaciones se obtiene la dirección (puntero) del objeto creado. Este puntero devuelto por new es del tipo correcto:puntero-a-ClaseC, sin que se necesaria ninguna conversión de tipo ("casting") explícita.
Aunque el operador tiene algunas limitaciones , puede utilizarse con tipos calificados ( 2.2). Por ejemplo, es válido:
newconst ClaseC;
Los objetos creados con new son persistentes, es decir, la vida del nuevo objeto es desde el punto de creación hasta el final del programa o hasta que el programador lodestruya explícitamente con el operador delete ( 4.9.21). Este último desasigna la zona de memoria ocupada por el objeto, de forma que queda disponible para nuevo uso. Las sucesivas invocaciones de este operador vanreservando zonas de memoria en el montón para los objetos sucesivamente creados. El gestor de memoria del compilador se encarga de mantener una tabla con los sitios ocupados y libres sin que hayaconflictos hasta que la memoria se ha agota, o no existe espacio contiguo suficiente para el nuevo objeto. En cuyo caso se lanza una excepción como indicativo del error .
El operador new puede aceptar...
Regístrate para leer el documento completo.