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