[问题] 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