في أي الحالات نستخدم malloc ومتى نستخدم new في C++؟
مرحبًا أيها الزملاء! أنا أدرس C++ ووصلت إلى إدارة الذاكرة. يبدو أنني فهمت أن malloc هي دالة من C، بينما new هو عامل في C++. لكن عمليًا حدث لدي بعض الالتباس.
لنفترض أنني أريد تخصيص ذاكرة لكائن من الفئة `Person`. إليك طريقتان أفهمهما:
```cpp
#include // لـ 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_;
};
// الخيار 1: malloc
Person* p1 = (Person*)malloc(sizeof(Person));
// الخيار 2: new
Person* p2 = new Person("Alice");
```
أرى أنه عند استخدام `new` يتم استدعاء المُنشئ تلقائيًا، بينما مع `malloc` يجب استخدام placement new أو شيء مشابه. وماذا عن التحرير؟ `free(p1)`