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 中国語 Web サイトの他の関連記事を参照してください。