[英]C++ method variable declaration
目前,我正在研究此C ++源代碼。 我不是C ++開發人員。
void SomeClass::SomeMethod() const
{
vector<Thing> things(count);
...
//Elements are added or replaced in things but no deallocation of things here
}
SomeMethod
被多次調用。 任何人都可以確認沒有泄漏,並且things
僅分配一次,請參考。
每次您進入函數時都會創建該vector
並在離開作用域時(函數結束時)將其銷毀(破壞所有對象並釋放所有內存)。 沒有泄漏,但是如果您頻繁調用該函數,則會有很多分配和釋放。
您有兩種解決方案可以避免這種情況:
mutable
屬性以便允許通過const
方法對其進行更改), 只要Thing
的析構函數和其他成員函數(尤其是復制構造函數,因為其用於vector
內務處理)正確地實現了其數據成員的所有內存,則要做的就是在每次調用the時創建一個新的vector<Thing>
功能。
將得到的局部變量things
被正確地釋放,包括每破壞Thing
件,當變量超出范圍(即,在功能退出)。
在沒有看到方法和Thing
所有代碼的情況下,要確定性是不可能的,但是這種用法表面上是正確的。
“事物”是局部自動變量。 另一篇文章對此有一個答案: 本地,全局,靜態,自動,寄存器,外部,常量,易失性變量存儲在哪里?
那是該功能的地方。 當它超出范圍時,它將自行分配內存。 所有的STL容器都可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.