构造函数中慎用memset
生活随笔
收集整理的這篇文章主要介紹了
构造函数中慎用memset
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
寫了一個小程序,工作時會跑一個大循環(huán),在運行時發(fā)現(xiàn)有嚴重的內(nèi)存泄露,內(nèi)存不停增長。
經(jīng)過幾次復(fù)查,終于找出問題所在,代碼結(jié)構(gòu)大概如下:
struct myobj
{
myobj()
{
?memset(this,0,sizeof(myobj));
}
? int n;
//...其他成員
string s;
}
定義了一個結(jié)構(gòu)體,有眾多類型成員,想初始化成員但又懶得一一賦值,所以在構(gòu)造函數(shù)使用了memset函數(shù)。
問題就出在這里,該函數(shù)同樣清空了所有string成員的內(nèi)存空間,影響了該對象的析構(gòu),從而導(dǎo)致內(nèi)存泄露。
所以當對象有復(fù)雜類型成員時,構(gòu)造函數(shù)中不要使用memset初始化,有指針成員時要謹慎使用!
總結(jié)
以上是生活随笔為你收集整理的构造函数中慎用memset的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现比较APP版本号大小
- 下一篇: 迅雷面试题: 模拟银行一天的工作, 统计