¿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)`