In welchen Fällen sollte man malloc und in welchen new in C++ verwenden?
Hallo, Kollegen! Ich lerne C++ und bin zur Speicherverwaltung gekommen. Ich habe zwar verstanden, dass malloc eine Funktion aus C ist und new ein Operator in C++, aber in der Praxis bin ich verwirrt.
Angenommen, ich möchte Speicher für ein Objekt der Klasse `Person` reservieren. Hier sind zwei Wege, die ich verstehe:
```cpp
#include // für 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_;
};
// Variante 1: malloc
Person* p1 = (Person*)malloc(sizeof(Person));
// Variante 2: new
Person* p2 = new Person("Alice");
```
Ich sehe, dass bei Verwendung von `new` automatisch der Konstruktor aufgerufen wird, während man bei `malloc` placement new oder etwas Ähnliches machen muss. Und was ist mit der Freigabe? `free(p1)`