尝试访问任何类型的堆时程序无法启动

时间:2015-11-15 08:41:13

标签: c windows heap

我正在尝试运行此程序,但每次我尝试访问堆时。程序没有运行,有人可以帮忙吗?它可以成功编译,但每次运行时,我的任务管理器都会出现3个新进程,但没有任何事情发生。

#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>

int main()
{
   HEAPLIST32 hl;

   HANDLE hHeapSnap = CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST,     GetCurrentProcessId());

   hl.dwSize = sizeof(HEAPLIST32);

   if ( hHeapSnap == INVALID_HANDLE_VALUE )
   {
      printf ("CreateToolhelp32Snapshot failed (%d)\n", GetLastError());
      return 1;
   }

   if( Heap32ListFirst( hHeapSnap, &hl ) )
   {
      do
      {
     HEAPENTRY32 he;
     ZeroMemory(&he, sizeof(HEAPENTRY32));
     he.dwSize = sizeof(HEAPENTRY32);

     if( Heap32First( &he, GetCurrentProcessId(), hl.th32HeapID ) )
     {
        printf( "\nHeap ID: %d\n", hl.th32HeapID );
        do
        {
           printf( "Block size: %d\n", he.dwBlockSize );

              he.dwSize = sizeof(HEAPENTRY32);
           } while( Heap32Next(&he) );
           }
         hl.dwSize = sizeof(HEAPLIST32);
  } while (Heap32ListNext( hHeapSnap, &hl ));
   }
   else printf ("Cannot list first heap (%d)\n", GetLastError());

   CloseHandle(hHeapSnap);

   return 0;
}

0 个答案:

没有答案