前面已经介绍两个分配内存个全局内存分配个是私有内存分配在进程私有内存里分配里又有两种分配情况种上基于栈式内存分配另种是基于堆内存分配在c里使用堆内存分配是使用HeapAlloc来实现也就是实现操作符分配内存时会调这个
HeapAlloc声明如下:
WINBASEAPI
__bcount(dwBytes)
LPVOID
WINAPI
HeapAlloc(
__in HANDLE hHeap,
__in DWORD dwFlags,
__in SIZE_T dwBytes
);
hHeap是进程堆内存开始位置
dwFlags是分配堆内存标志
dwBytes是分配堆内存大小
例子如下:
#001 //
#002 //分配堆内存
#003 //蔡军生 2007/11/26 QQ:9073204 深圳
#004 void MemHeap(void)
#005 {
#006 //
#007 const nHeapSize = 1024;
#008 PBYTE pNewHeap = (PBYTE) ::HeapAlloc(GetProcessHeap, 0, nHeapSize);
#009
#010 (pNewHeap)
#011 {
#012 //测试分配堆内存
#013 ZeroMemory(pNewHeap,nHeapSize);
#014 memcpy(pNewHeap,_T("分配堆内存成功\r\n"),
#015 (_T("分配堆内存成功\r\n")));
#016 OutputDebugString((LPWSTR)pNewHeap);
#017
#018 //释放内存
#019 BOOL bRes = ::HeapFree(GetProcessHeap, 0, pNewHeap);
#020 (bRes != TRUE)
#021 {
#022 OutputDebugString(_T("释放内存出错\r\n"));
#023 }
#024 }
#025
#026 }
最新评论