Avatar ·

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?