CString filenamebuf,mophonebuf;
GetPrivateProfileString("SetVoiceInfo","VoiceFile","",filenamebuf.GetBuffer(filenamebuf.GetLength()),255,"./INI/ibsc_config.ini");
GetPrivateProfileString("SetVoiceInfo","MoPhone","",mophonebuf.GetBuffer(filenamebuf.GetLength()),255,"./INI/ibsc_config.ini");
m_palyfilename = filenamebuf;
m_strMoNum = mophonebuf;
m_palyfilename.ReleaseBuffer();
mophonebuf.ReleaseBuffer();
这段程序家最后两句出错,不加可以调试通过并结果正确。
但是,总觉得有空间没有释放,会存在潜在的危险。
请问高手们,这是怎么回事,并能不吝赐教!

解决方案 »

  1.   

    //试试这样:CString filenamebuf,mophonebuf; 
    GetPrivateProfileString("SetVoiceInfo","VoiceFile","",filenamebuf.GetBuffer(filenamebuf.GetLength()),255,"./INI/ibsc_config.ini"); 
    GetPrivateProfileString("SetVoiceInfo","MoPhone","",mophonebuf.GetBuffer(filenamebuf.GetLength()),255,"./INI/ibsc_config.ini"); filenamebuf.ReleaseBuffer();
    mophonebuf.ReleaseBuffer();m_palyfilename = filenamebuf; 
    m_strMoNum = mophonebuf; m_palyfilename.ReleaseBuffer(); 
    mophonebuf.ReleaseBuffer(); 

      

  2.   

    m_palyfilename.ReleaseBuffer(); 错了->  filenamebuf.ReleaseBuffer(); 
      

  3.   

    //试试直接使用 m_palyfilename 和 m_strMoNum 来获取数据。GetPrivateProfileString("SetVoiceInfo","VoiceFile","",m_palyfilename.GetBuffer(255),255,"./INI/ibsc_config.ini"); 
    GetPrivateProfileString("SetVoiceInfo","MoPhone","",m_strMoNum.GetBuffer(255),255,"./INI/ibsc_config.ini"); m_palyfilename.ReleaseBuffer();
    m_strMoNum.ReleaseBuffer();
      

  4.   

    filenamebuf.GetBuffer(filenamebuf.GetLength())
    你的filenamebuf.GetLength为0,你的GetBuffer如何能成功
    改为filenamebuf.GetBuffer(255);
      

  5.   

    我试了一下!是releasebuffer放的位置不对,应该紧跟使用getbuffer那句。谢谢各位散分!