TEST.CXX
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:2k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright 1992 - 1997 Microsoft Corporation.
  5. //
  6. //  File:       test.cxx
  7. //
  8. //  Contents:   test application for CMALSPY sample library
  9. //
  10. //----------------------------------------------------------------------------
  11. #include <windows.h>
  12. #include <ole2.h>
  13. #include "cmallspy.hxx"
  14. extern "C" void printf(CHAR*, ...);
  15. const UINT NALLOCATIONS = 573;
  16. int __cdecl main(int argc, char **argv)
  17. {
  18.     HRESULT     hr;
  19.     LPMALLOCSPY pMallocSpy = new CMallocSpy();
  20.     // Initialize
  21.     CoInitialize(NULL);
  22.     hr = CoRegisterMallocSpy(pMallocSpy);
  23.     if (hr != S_OK)
  24.     {
  25.         printf("CoRegisterMallocSpy failed with %xn", hr);
  26.         CoUninitialize();
  27.         return 0;
  28.     }
  29.     printf("CoRegisterMallocSpy succeeded.n");
  30.     // Allocate enoungh to force an expansion
  31.     LPMALLOC pMalloc;
  32.     void    *allocs[NALLOCATIONS];
  33.     ULONG j;
  34.     if ((hr = CoGetMalloc(MEMCTX_TASK, &pMalloc)) != S_OK)
  35.     {
  36.         printf("CoGetMalloc failed with %xn", hr);
  37.         CoUninitialize();
  38.         return 0;
  39.     }
  40.     printf("CoGetMalloc succeeded.n");
  41.     printf("Allocating %u memory blocks.n", NALLOCATIONS);
  42.     for (j = 0; j < NALLOCATIONS; j++)
  43.     {
  44.         allocs[j] = pMalloc->Alloc(173);
  45.     }
  46.     // Now release everything
  47.     printf("Releasing %u memory blocks.n", NALLOCATIONS);
  48.     for (j = 0; j < NALLOCATIONS; j++)
  49.     {
  50.         pMalloc->Free(allocs[j]);
  51.         allocs[j] = NULL;
  52.     }
  53.     printf("Test complete.n");
  54.     // All done
  55.     CoRevokeMallocSpy();
  56.     CoUninitialize();
  57.     return 0;
  58. }