代码如下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
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
改strcpy试,不要直接赋值
还有就是你把szRead[dwDataLen] = '\0'这一行上面的程序Share.