描述:
我用VC写了一个可供ASP调用的组件,在调用时要分配内存给buf。
在程序结尾如果我用free或者delete释放内存(我不知道应该用哪个,但两个方法都试过,都会报错),在ASP调用组件是会报错误说内存只读;
如果我不释放内存,则不会报错,而且运行正常,只是在“任务管理器”中查看,每运行一次ASP,则内存消耗会不断增加,并且结束ASP程序运行后,被占用了的内存仍然不能够释放。
我应该怎么做?
程序片断如下:
请问如何释放buf和pData占用的内存空间?
//******************************************//
BYTE *buf = NULL;
BYTE HUGEP *pData;
//以下读取"c:\test.bmp"到pData
CFile m_pHexFile;
m_pHexFile.Open("c:\test.bmp", CFile::modeReadWrite);
pData = new BYTE[m_pHexFile.GetLength()];
bufSize = m_pHexFile.GetLength();
m_pHexFile.ReadHuge(pData,bufSize);
m_pHexFile.Close();
//以下通过theBMPFILE.MakeBMP()函数将pData处理后赋给buf
buf = theBMPFILE.MakeBMP(pData, &width, &height);
//
数据处理开始
...............
数据处理结束
//
//释放内存,为什么我象如下这样写会报错
if(buf!=NULL) free(buf);
if(pData!=NULL) free(pData);
//******************************************//
解决方案1:
buf是有mfc类的析构函数删除的
革命尚未成功,兄弟仍须努力。
if (pData!= NULL)
{
delete []pData;
pData = NULL;
}
另,如果pData的值中途有改变的话,删除前需要赋回开始new的值
buf不用删除