[問題] Struct內vector的記憶體釋放?

作者: blackcity (超黑城市)   2018-04-09 16:33:12
開發平台(Platform): (Ex: Win10, Linux, ...)
Win7
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VS2012
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
n/a
問題(Question):
想請問一下Vector在Struct內的記憶體該如何才是完整正確的釋放?
我宣告了一個Struct裡面包含了Vector
1. 宣告Struct為物件
MyStruct StructItem;
2. 宣告Struct為指標
MyStruct *StructItem;
StructItem = new StructItem();
delete StructItem;
請問這兩種方法,Struct內的Vector物件是不是都會完整的釋放
不需要額外再去對vector作Swap的動作?
另外問一下,Vector Swap前,Clear是必須的嗎?
謝謝~
作者: dzwei (Cout<< *p << \n ;)   2018-04-09 16:52:00
vector是動態產生的嘛?如果你沒有用 vector A = new vector 這種方式產生vector照理說 不用去擔心memory的問題
作者: blackcity (超黑城市)   2018-04-09 16:54:00
裡面是宣告固定的 vector<int> Vecitem; 這樣
作者: dzwei (Cout<< *p << \n ;)   2018-04-09 16:57:00
恩 那就不用擔心了 , 但還是要注意效能的問題 參考http://t.cn/RmfRNZT另外 swap的問題可以用 std::vector裡面的non-member funcstd::swap 參考 https://bit.ly/2qiTLuq
作者: bluesoul (忙死你老爸)   2018-04-09 19:58:00
請使用shrink_to_fit
作者: KanzakiHAria (神崎・H・アリア)   2018-04-09 21:23:00
會這樣問表示你不懂STL container的意義你想釋放的是vector這個container本身還是你想釋放vector的capacity?
作者: steve1012 (steve)   2018-04-10 00:29:00
不需要釋放
作者: KanzakiHAria (神崎・H・アリア)   2018-04-10 11:32:00
完全不用 vector就是會自動管理記憶體甚至要說swap是錯誤的用法也不為過你只要管好你的MyStruct本身

Links booklink

Contact Us: admin [ a t ] ucptt.com