如题,在VC中什么情况会引起内存泄漏?下列情况会引起内存泄漏吗?
1、比如在函数体内使用结构体?系统会自动回收吗?
2、在定义函数成员是定义的引用,用完后会自动回收吗?

解决方案 »

  1.   

    1.使用结构体本身并不会产生内存泄漏``但如果你的结构体是new出来的,在程序结束后也没delete``那就泄了``嘿`
    2.这个看不懂你的意思``不过定义引用应该不会出现内存泄漏``想象不到什么情况会泄``不过有可能是会造成内存访问错误倒是有可能``内存泄漏就是说`你在堆里分配了(new)内存``没有释放(delete)``不过一般人很少犯这种错误``除极少数天才``像我这样``哈哈``多数情况是因为不了解某些类的实现机制啊``比如com里面的BSTR``你从某个函数拿到一个BSTR,你就需要释放``但是通常情况下是因为不知道要释放``所以泄了```
      

  2.   

    new 完之后 一定要用delete
      

  3.   

    有可能异常造成

    try
    {
        classA pA = new classA;
        int b= 5/0; //在此异常 
        delete pA;
    }
    catch(...)
    {
      //在这没有释放
    }
      

  4.   

    疯长,应该是你在循环new,最后只delete 一次造成的吧...
    想让我们找原因,贴代码出来...
      

  5.   

    把你new出来的东西 都看看有没有delete 有些BSTR的 就算在函数体内定义的 也要记得释放建议你还是分段 1个个调试吧
      

  6.   

    new没有delete
    malloc没有free
    GlobalAlloc没有GlobalFree
    ……………………
    总之,申请了内存没有释放都会造成内存泄漏;对于GDI资源,Create...()的函数要对应Delete...()的函数。
      

  7.   

    对一个void*类型的指针进行delete操作,有可能造成内存泄漏,它不执行析构函数