CSting a;
int i =0;
while(true)
{
i++;
a.Format("Asdf%d",i);
}
a的内存是怎么释放的

解决方案 »

  1.   

    CString析构的时候,自己会去释放的
      

  2.   

    CString类有它自己的析构函数.
      

  3.   

    这个CString a不是堆申请的变量空间
    不用你释放,当这个函数完了,也自动释放了,
    那些你申请的堆空间如*=new *;才要delete *;
      

  4.   

    DWORD WINAPI CDataOption::SwitchFile(LPVOID lpParameter)
    {
    CStringArray *tables=new CStringArray() ;
    tables = &((FIELDPARAM *)lpParameter)->TableArray;
    vCount = tables->GetSize();
    CWnd * hwnd;
    hwnd = ((FIELDPARAM *)lpParameter)->hwnd;
    CLMuitlTifToSingTifDlg *p = (CLMuitlTifToSingTifDlg *)hwnd;
    .....
    }
    此处的tables和p内存是怎么释放啊
      

  5.   

    使用CString时,
    最后最好使用ReleaseBuffer()释放一下空间!!
    比较多安全!!!
      

  6.   

    但是楼主想在同一个CString的作用域里,再次使用同一个CString 变量的话,就需要先把CString清空,才能重新赋值,也就是使用a.Empty().
    不知道楼主是不是这个意思?
    如果只是释放内存的话,就是上面那些大哥们说的,你不用去操心它的释放问题,CString内部会释放
      

  7.   

    想这样
    while(true)
    {
    a="a";
    }
    是否会造成内存泄漏呢
      

  8.   


    不会泄露的,请你放心的使用CString。
      

  9.   


    tables是自己动态new出来的用完后要delete tables释放;后面p只是把指针指向某指定位置,并未申请内存,所以不用作释放。