代码如下DWORD dwDataLen;
CString strRet;
char *szRead;.....
(这里给dwDataLen赋予了某值)
.....
szRead = new char[dwDataLen + 1];...
szRead[dwDataLen] = '\0';
strRet = szRead;
delete[] szRead;return strRet;
问题在于,这段代码执行次数过多之后,MFC会报出内存不足的消息框,是不是有内存泄露的情况了?
还有,使用new分配内存之后我把VS2008调试时的内存窗口显示为szRead的地址,然后观察szRead内存区域的变化。假如szRead分配的内存为5个字节,我发现delete之后,szRead内存区域的5个字节以后的数据也改变了。请教这是内存泄露的现象吗?图1图2

解决方案 »

  1.   

    调试时,输出窗口没有显示memory leak!吗?
      

  2.   

    肯定是有内存泄漏了,new之后用memset()初始化下再调试下看看
      

  3.   

    new了内存之后,最好是ZeroMemory;此处的代码似乎没什么问题,可能是其他地方。
      

  4.   

    new出来内存,初始化一下,问题可能是你其他地方导致的。
      

  5.   

    strRet = szRead;
    改strcpy试,不要直接赋值
      

  6.   

    楼主你单步调试一下,你注意观察你申请的那五个自己后面的4个0xfd,看看是否被你的程序改动了。
    还有就是你把szRead[dwDataLen] = '\0'这一行上面的程序Share.