VC如何动态释放资源到磁盘

VC如何动态释放资源到磁盘,第1张

假设该文本文件在资源中的ID是IDR_TEXT,放在TEXT分类(目录)下

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系统,但程序结束时,系统会自动释放内存的。应该回答了你的问题了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11749417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存