2016-01-01 28 views
3

如何在Test.h中管理char數組buffer我應該刪除.h文件中的char數組嗎

Test.h

class Test{ 
public: 
    Test(); 
    ~Test(); 

    char buffer[255]; 
}; 

Test.cc

#include "Test.h" 

Test::Test() 
{ 
} 

Test::~Test() 
{ 
    // Do I need to delete/free buffer? 
} 

我明白,當newmalloc使用的內存必須使用deletefree()被釋放。

對於Test的每個實例,堆棧上是否分配了字符數組buffer,因此不需要刪除?

+1

你永遠不需要刪除任何不是從新返回的東西。 – molbdnilo

+0

請注意,「在標題中」信息不屬於此問題的任何地方。 – LogicStuff

回答

5

不,你不需要刪除它。因此,你不需要析構函數(除非你有哪些需要被釋放一些其他資源)

規則很簡單:用malloc/new/new[]應該獲得釋放每個存儲/對象/銷燬一次,只一次與相應的free/delete/delete[]。沒有什麼。而已。

另外,在現代C++中,您很少需要像這樣管理內存資源。你會使用std::vector或其他容器,或者如果你真的需要指針,你應該使用智能指針,std::unique_ptrstd::shared_ptr

2
Is the char array buffer allocated on the stack for 
each instance of Test and so does not need to be deleted? 

由於char buffer[255]是一個普通字符數組Test類,以便其壽命栓與每當創建Test類的對象Test類即對象中封裝,對於陣列的存儲器將被分配,並且當對象是被摧毀,記憶將被釋放。

因此,是否要對stackheap(使用new)創建Test類的對象,當對象將被(自動地或使用delete)破壞,由陣列的佔有存儲器將被釋放。

相關問題