Avatar ·

في أي الحالات نستخدم 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)`