您的位置:首页 > 其它

28 windows_28_windows_heap 堆

2016-06-10 12:01 246 查看

windows_28_windows_heap 堆

// windows_28_windows_heap.cpp : 定义控制台应用程序的入口点。

//


#include "stdafx.h"

#include <windows.h>

#include <stdlib.h>


void HeapInfo( )

{

//默认堆句柄

HANDLE hHeap = GetProcessHeap( );

printf( "Default Heap:%p\n", hHeap );

//所有堆的句柄

HANDLE hHeaps[256] = { 0 };

DWORD nCount = GetProcessHeaps( 256, hHeaps );

printf( "All Heap:%d\n", nCount );

for (DWORD nIndex = 0; nIndex < nCount; nIndex++)

{

printf( "\t%d: %p\n", nIndex + 1, hHeaps[nIndex] );

}

}

void Heap( )

{


HeapInfo( );//堆测试

//1、创建堆

//HeapCreate

HANDLE hHeap = HeapCreate( HEAP_GENERATE_EXCEPTIONS, 1024 * 1024, 0 );

HeapInfo( ); //堆测试

//2、分配内存

//HeapAlloc

CHAR *pszBuf = (CHAR*)HeapAlloc( hHeap, HEAP_ZERO_MEMORY, 100 );

//3、使用内存

printf( "HeapCreate:%p\n", hHeap );

printf( "HeapCreateBuf:%p\n", pszBuf );

//strcpy_s( pszBuf, ( rsize_t)strlen( "hello Heap\n" ), "hello Heap\n" );

//printf( "%s", pszBuf );

//4、释放内存

//HeapFree

HeapFree( hHeap, 0, pszBuf );

//5、释放堆

//HeapDestroy

HeapDestroy( hHeap );

HeapInfo( );//堆测试

}

int _tmain(int argc, _TCHAR* argv[])

{

//调试看代码

CHAR *pszBuf = (CHAR*)malloc( 100 );


Heap( ); 

return 0;

}

[/code]

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: