HRSRC hResource = FindResource(GetModuleHandle(NULL),
MAKEINTRESOURCE(IDR_TEXT),TEXT("TEXT"),)
if(hResource)
{
HGLOBAL hg = LoadResource(GetModuleHandle(NULL), hResource)
if(hg)
{
LPVOID pData = LockResource(hg)
if(pData)
{
DWORD dwSize = SizeofResource(GetModuleHandle(NULL), hResource)
CFile calcFile
if(calcFile.Open("c:\\text.txt", CFile::modeCreate | CFile::modeReadWrite))
{
calcFile.Write(pData, dwSize)
calcFile.Close()
}
}
}
}
先看下资源文件的大小,放入dwSize中HRSRC hmyrs = NULL
HGLOBAL hrpt = NULL
HANDLE hFile=NULL
DWORD dwSize
LPVOID lpBuffer
dwSize = 2143794
hmyrs = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(130), _T("EXE"))
if (hmyrs == NULL)
{
MessageBox(_T("error"), _T("wlf"), 0)
return
}
hrpt = LoadResource(NULL, hmyrs)
if (hrpt == NULL)
{
MessageBox(_T("LoadResource error"))
}
lpBuffer = LockResource(hrpt)
DWORD wr
hFile = ::CreateFile(_T("wlf.exe"), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(_T("Create File error"))
}
if (false == WriteFile(hFile, lpBuffer, dwSize, &wr, NULL))
{
MessageBox(_T("Write File error"))
}
CloseHandle(hFile)
那不是释放内存的问题,而是你运行的程序是死循环,就是没办法停止,建议你修改程序。还有,在C++中释放内存可以用delete语句,比如我申请了动态存储空间p,“int
*p
p=new
int[10];”最后我想释放内存,就需要添加语句“delete
[]p”.
说多一点,使用doc系统,但程序结束时,系统会自动释放内存的。应该回答了你的问题了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)