Por qué los programadores de C++ deberían minimizar el uso de `new`
¡Hola, colegas! Soy un desarrollador principiante de C++ y estoy tratando de entender las mejores prácticas. En todas partes leo que se debe evitar `new`, pero no comprendo del todo la razón. En los tutoriales a menudo escriben: "asigna memoria en el heap mediante `new`", y luego los desarrolladores experimentados dicen: "no hagas eso". Esto me confunde.
Aquí hay un ejemplo simple: necesito crear un objeto que viva más tiempo que la función actual. Escribo:
```cpp
class MyClass {
public:
MyClass() { std::cout << "Creado\n"; }
~MyClass() { std::cout << "Destruido\n"; }
void doWork() { /* ... */ }
};
void process() {
MyClass* obj = new MyClass();
obj->doWork();
// ¡Olvidé delete! Fuga de memoria.
}
```
Problema: a menudo olvido llamar a `delete`, y esto provoca fugas de memoria. También he oído que `new` puede lanzar excepciones, y si algo sale mal en el constructor, la memoria también se fuga.
Pero entonces, ¿cómo crear objetos que deben existir fuera del ámbito de la función? ¿Usar variables globales?