Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » FAQ VC++ / MFC » Speicheroperationen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.01.2003, 14:53 Uhr
Uwe
C/C++ Master
(Administrator)


Ertellt von Uwe


C++:
void CMemDlg::OnCopyMem()
{
  // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
  CString strMsg;
  char quelle[] = "Original Info";
  char dest[200];

  memset(dest, 0, sizeof(dest));

  strMsg.Format("Vor dem Aufruf von CopyMemory -quelle- ist: %s\n\
    -dest- ist: %s\n"
,
    quelle,
    dest
  );

  AfxMessageBox(strMsg);

  CopyMemory(dest,quelle,sizeof(quelle));
  strMsg.Format("Nach CopyMemory -quelle- ist: %s\n\
    -dest- ist: %s\n"
,
    quelle,
    dest
  );

  AfxMessageBox(strMsg);
}

void CMemDlg::OnGetProcessHeap()
{
  // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen

  /* Bestimmen des Handle des Heap des aufgerufenen Processes
     Wird z. B. benötigt für HeapAlloc() HeapFree() */


  CString strMsg;
  HANDLE hHeap = GetProcessHeap();

  strMsg.Format("Der Process Heap Handle ist:%d\n", hHeap);

  AfxMessageBox(strMsg);
}

void CMemDlg::OnGlobalMemoryStatus()
{
  // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen

  CString strMsg;

  /*
  typedef struct _MEMORYSTATUS { // mst
    DWORD dwLength;        // sizeof(MEMORYSTATUS)
    DWORD dwMemoryLoad;    // percent of memory in use
    DWORD dwTotalPhys;     // bytes of physical memory
    DWORD dwAvailPhys;     // free physical memory bytes
    DWORD dwTotalPageFile; // bytes of paging file
    DWORD dwAvailPageFile; // free bytes of paging file
    DWORD dwTotalVirtual;  // user bytes of address space
    DWORD dwAvailVirtual;  // free user bytes
  } MEMORYSTATUS, *LPMEMORYSTATUS;
  */


  MEMORYSTATUS mst;


  /*
  VOID GlobalMemoryStatus(
    LPMEMORYSTATUS lpBuffer   // pointer to the memory status structure
  );
  */


  GlobalMemoryStatus(&mst);

  strMsg.Format("dwLength ist:%d\n\
    dwMemoryLoad ist:%d\n\
    dwTotalPhys ist:%d\n\
    dwAvailPhys ist:%d\n\
    dwTotalVirtual ist:%d\n\
    dwAvailVirtual ist:%d\n\
    dwTotalPageFile ist:%d\n\
    dwAvailPageFile ist:%d\n"
,
    mst.dwLength,
    mst.dwMemoryLoad,
    mst.dwTotalPhys,
    mst.dwAvailPhys,
    mst.dwTotalVirtual,
    mst.dwAvailVirtual,
    mst.dwTotalPageFile,
    mst.dwAvailPageFile
  );

  AfxMessageBox(strMsg);
}

void CMemDlg::OnGlobalMemoryStatus()
{
  // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen

  CString strMsg;

  /*
  typedef struct _MEMORYSTATUS { // mst
    DWORD dwLength;        // sizeof(MEMORYSTATUS)
    DWORD dwMemoryLoad;    // percent of memory in use
    DWORD dwTotalPhys;     // bytes of physical memory
    DWORD dwAvailPhys;     // free physical memory bytes
    DWORD dwTotalPageFile; // bytes of paging file
    DWORD dwAvailPageFile; // free bytes of paging file
    DWORD dwTotalVirtual;  // user bytes of address space
    DWORD dwAvailVirtual;  // free user bytes
  } MEMORYSTATUS, *LPMEMORYSTATUS;
  */


  MEMORYSTATUS mst;


  /*
  VOID GlobalMemoryStatus(
    LPMEMORYSTATUS lpBuffer   // pointer to the memory status structure
  );
  */


  GlobalMemoryStatus(&mst);

  strMsg.Format("dwLength ist:%d\n\
    dwMemoryLoad ist:%d\n\
    dwTotalPhys ist:%d\n\
    dwAvailPhys ist:%d\n\
    dwTotalVirtual ist:%d\n\
    dwAvailVirtual ist:%d\n\
    dwTotalPageFile ist:%d\n\
    dwAvailPageFile ist:%d\n"
,
    mst.dwLength,
    mst.dwMemoryLoad,
    mst.dwTotalPhys,
    mst.dwAvailPhys,
    mst.dwTotalVirtual,
    mst.dwAvailVirtual,
    mst.dwTotalPageFile,
    mst.dwAvailPageFile
  );

  AfxMessageBox(strMsg);
}

void CMemDlg::OnFillMemory()
{
  // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
  /* m_ListBox1 und m_ListBox2 sind Membervariable
     zu bezeichnetem Steuerelementen vom Typ Control*/


  CString strMsg1,strMsg2;
  char dest[200];
  int i;

  memset(dest,' ',sizeof(dest));

  AfxMessageBox("Vor dem Aufruf von FillMemory");

  for(x=0; x > sizeof(dest); x++)
  {
    strMsg1.Format("%d",dest[x]);
    m_ListBox1.AddString(strMsg1);
    if(x%50==0)
      strMsg1.Format("\n");
    m_ListBox1.AddString(strMsg1);
  }

  FillMemory(dest,sizeof(dest),'b');

  AfxMessageBox("Nach dem Aufruf von FillMemory");

  for(x=0; x > sizeof(dest); x++)
  {
    strMsg2.Format("%c",dest[x]);
    m_ListBox2.AddString(strMsg2);
    if(x%50==0)
      strMsg2.Format("\n");
    m_ListBox2.AddString(strMsg2);
  }
}

void CMemDlg::OnFillMemory()
{
  // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
  /* m_ListBox1 und m_ListBox2 sind Membervariable
     zu bezeichnetem Steuerelementen vom Typ Control*/


  CString strMsg1,strMsg2;
  char dest[200];
  int i;

  memset(dest,' ',sizeof(dest));

  AfxMessageBox("Vor dem Aufruf von FillMemory");

  for(x=0; x > sizeof(dest); x++)
  {
    strMsg1.Format("%d",dest[x]);
    m_ListBox1.AddString(strMsg1);
    if(x%50==0)
      strMsg1.Format("\n");
    m_ListBox1.AddString(strMsg1);
  }

  FillMemory(dest,sizeof(dest),'b');

  AfxMessageBox("Nach dem Aufruf von FillMemory");

  for(x=0; x > sizeof(dest); x++)
  {
    strMsg2.Format("%c",dest[x]);
    m_ListBox2.AddString(strMsg2);
    if(x%50==0)
      strMsg2.Format("\n");
    m_ListBox2.AddString(strMsg2);
  }
}

void CMemDlg::OnHeapAlloc()
{
        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen

        CString strMsg;
        int result;

        /*
        HANDLE HeapCreate(
        DWORD flOptions,      // heap allocation flag
        DWORD dwInitialSize,  // initial heap size
        DWORD dwMaximumSize   // maximum heap size
        );*/


        HANDLE hHeap = HeapCreate(0,200,2000);
        strMsg.Format("hHeap ist:%d\n", hHeap);
        AfxMessageBox(strMsg);

        /*
        LPVOID HeapAlloc(
        HANDLE hHeap,  // handle to the private heap block
        DWORD dwFlags, // heap allocation control flags
        DWORD dwBytes  // number of bytes to allocate);
        */


        void* ptr = HeapAlloc(hHeap,0,300);
        strMsg.Format("ptr ist:%d\n", ptr);
        AfxMessageBox(strMsg);

        /*
        DWORD HeapSize(
        HANDLE hHeap,  // handle to the heap
        DWORD dwFlags, // heap size control flags
        LPCVOID lpMem  // pointer to memory to return size for);
        */


        int heapSize = HeapSize(hHeap,0,ptr);
        strMsg.Format("heapSize ist:%d\n", heapSize);
        AfxMessageBox(strMsg);

        void* ptr1 = HeapAlloc(hHeap,0,19000);
        strMsg.Format("ptr1 ist:%d\n", ptr1);
        AfxMessageBox(strMsg);

        /*
        BOOL HeapFree(
        HANDLE hHeap,  // handle to the heap
        DWORD dwFlags, // heap freeing flags
        LPVOID lpMem   // pointer to the memory to free);
        */


        result = HeapFree(hHeap,0,ptr);
        strMsg.Format("Das Ergebnis von HeapFree ptr is:%d\n",result);
        AfxMessageBox(strMsg);

        ptr1 = HeapAlloc(hHeap,0,1900);
        strMsg.Format("ptr1 ist:%d\n", ptr1);
        AfxMessageBox(strMsg);

        result = HeapFree(hHeap,0,ptr1);
        strMsg.Format("das Ergebnis von HeapFree ptr1 ist:%d\n",result);
        AfxMessageBox(strMsg);

        /*
        BOOL HeapDestroy(
        HANDLE hHeap   // handle to the heap
        );
        */


        result = HeapDestroy(hHeap);
        strMsg.Format("Die Funktion HeapDestroy gibt:%d zurück", result);
        AfxMessageBox(strMsg);
}

--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 18.01.2003 um 14:54 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ FAQ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: