Dalam C#, pengendali baharu memperuntukkan memori pada timbunan dan memulakannya dengan nilai lalai untuk jenis data. Walau bagaimanapun, dalam C , gelagat pengendali baharu berbeza dengan ketara.
Kod yang anda berikan menunjukkan kebocoran memori:
class A { ... }; struct B { ... }; A *object1 = new A(); B object2 = *(new B());
Inilah sebabnya:
Untuk mengelakkan kebocoran memori, ikut garis panduan ini:
template<typename T> class automatic_pointer { public: automatic_pointer(T* pointer) : pointer(pointer) {} ~automatic_pointer() { delete pointer; } T& operator*() const { return *pointer; } T* operator->() const { return pointer; } private: T* pointer; }; int main() { automatic_pointer<A> a(new A()); automatic_pointer<B> b(new B()); }
Dengan menggunakan teknik ini, anda boleh mengelakkan kebocoran memori dan memastikan pengurusan sumber yang betul dalam kod C.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Kebocoran Memori Apabila Menggunakan Peruntukan Memori Dinamik dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!