請(qǐng)問如果我在STL容器存儲(chǔ)的是對(duì)象,那么我在調(diào)用clear()或eara()的時(shí)候,會(huì)自動(dòng)釋放這個(gè)對(duì)象的內(nèi)存空間嗎?會(huì)執(zhí)行該對(duì)象的析夠函數(shù)嗎?
=======================
會(huì),析構(gòu)函數(shù)也會(huì)自動(dòng)調(diào)用。
但如果存儲(chǔ)的是對(duì)象的指針,外部對(duì)象如果是在堆上分配的,需要我們自已delete
=======================
STL的容器是基于by value語意的。當(dāng)你把一個(gè)元素放入容器中,在容器中存放的實(shí)際上是這個(gè)元素的一個(gè)副本(這就是為什么STL容器要求元素必須可以拷貝構(gòu)造和賦值),副本所占的內(nèi)存是STL容器自己分配的,所以它會(huì)自己回收這些內(nèi)存,同時(shí)調(diào)用元素的析構(gòu)函數(shù)。
但是如果你把指針放到容器中,clear的時(shí)候容器只負(fù)責(zé)回收指針本身所占的內(nèi)存,至于指針?biāo)赶虻臇|西,它是不管。