Avatar ·

¿En qué casos usar malloc y en qué casos usar new en C++?

¡Saludos, colegas! Estoy aprendiendo C++ y he llegado a la gestión de memoria. Parece que entendí que malloc es una función de C, y new es un operador en C++. Pero en la práctica me surgió confusión. Supongamos que quiero asignar memoria para un objeto de la clase `Person`. Aquí hay dos formas que entiendo: ```cpp #include // para malloc #include class Person { public: Person(const std::string& name) : name_(name) { std::cout << "Person created: " << name_ << std::endl; } ~Person() { std::cout << "Person destroyed: " << name_ << std::endl; } void greet() { std::cout << "Hi, I'm " << name_ << std::endl; } private: std::string name_; }; // Opción 1: malloc Person* p1 = (Person*)malloc(sizeof(Person)); // Opción 2: new Person* p2 = new Person("Alice"); ``` Veo que al usar `new` se llama automáticamente al constructor, mientras que con `malloc` se necesita hacer placement new o algo similar. ¿Y qué pasa con la liberación? `free(p1)`