今天我被震惊了,vc2005居然犯这么一个低级的错误

今天偶然在网上看到一篇文章

 

void  Test()
{
    std::stringstream temp;
}

上面这么一个代码,会产生4个字节的内存泄露,我赶快去查负责的工程项目,ft,才发现stringstream是多么基础的设置,如此多的代码用到,就算不直接用到也会被boost用到,运行一看原来开发中的工程项目10分钟有大概1m的泄露,晕死,如此基础

在网上一查,ms已经知道并且解决了,http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98861

原来所有的std::iostream子类都会泄露,就是说fstream也会了。彻底没有语言了。赶快去打补丁吧。

根据网上信息查了下问题,xiosbase:514行有这么一段代码:

 

     void  __CLR_OR_THIS_CALL _Init()
        
{    // initialize a new ios_base
        _Ploc = 0;
        _Except 
= goodbit;
        _Fmtfl 
= skipws | dec;
        _Prec 
= 6;
        _Wide 
= 0;
        _Arr 
= 0;
        _Calls 
= 0;
        clear(goodbit);
        _Ploc 
= _NEW_CRT locale;//<--此处new了一个4字节大小的类,但是销毁的时候没有删除......
        }

又是locale出现问题,之前locale导致fstream无法用中文路径名来成功构造,ft,这个写locale的人应该打一顿

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值