Categorías: Tutoriales

Punteros inteligentes en C++11

Como se ha dicho otras veces, las mejores de C++11 son evidentes. Tres ejemplos son la facilidad de convertir un entero a cadena en C++, utilizar bucles for basados en rangos o usar expresiones regulares.

Aquí os muestro, mediante un ejemplo, la facilidad con la que en C++11 se manejan los punteros, olvidándote de tener que liberar memoria:

#include <memory>

void funcion()
{
    int * p1 = new int; // Método tradicional para asignar memoria
    
    /* Código donde se usa el puntero 'p1' */
    
    delete p1; // ¡Recuerda liberar la memoria!

    std::shared_ptr<int> p2(new int); // Nuevo método para asignar memoria

    /* Código donde se usa el puntero 'p2' */
    
    // ¡Y olvídate de liberar memoria!
}

int main()
{
    funcion();
   
    return 0;
}

El ejemplo se ha mostrado mediante el puntero inteligente shared_ptr que permite compartir el puntero, si estás seguro que el puntero es único usa unique_ptr.

Manuel Ignacio López Quintero

Doctor en Ingeniería Informática especializado en Sistemas Inteligentes y Visión Artificial. Profesor y coadministrador de Linux Hispano. Para más información o para contactar con él visita su página oficial: Manuel Ignacio López Quintero.

Ver comentarios

Compartir
Publicado por
Manuel Ignacio López Quintero

Entradas recientes

432 CVEs

5 días hace

Anti-IA

2 semanas hace

Memoria

3 semanas hace

Mal uso

4 semanas hace

Precio de la RAM

1 mes hace

AUR

1 mes hace