在C# 中,new 運算子在堆上分配內存,並使用資料型別的預設值對其進行初始化。然而,在 C 中, new 運算子的行為有很大差異。
您提供的程式碼示範了記憶體洩漏:
class A { ... }; struct B { ... }; A *object1 = new A(); B object2 = *(new B());
以下是發生這種情況的原因:
為了避免記憶體洩漏,請遵循以下準則:
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()); }
透過使用這些技術,您可以防止記憶體洩漏並確保C 代碼中正確的資源管理。
以上是在 C 中使用動態記憶體分配時如何避免記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!