How to use the GlobalAlloc function using the Win32 API in C

1 Answer

0 votes
#include <windows.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    SIZE_T size = 128;  // allocate 128 bytes

    // Allocate movable, zero-initialized memory
    HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, size);
    if (hMem == NULL) {
        printf("GlobalAlloc failed\n");
        return 1;
    }

    // Lock the memory to get a usable pointer
    void* pMem = GlobalLock(hMem);
    if (pMem == NULL) {
        printf("GlobalLock failed\n");
        GlobalFree(hMem);
        return 1;
    }

    // Use the memory
    strcpy_s((char*)pMem, size, "GlobalAlloc memory allocation");

    printf("Stored string: %s\n", (char*)pMem);

    // Unlock the memory
    GlobalUnlock(hMem);

    // Free the memory
    if (GlobalFree(hMem) != NULL) {
        printf("GlobalFree failed\n");
        return 1;
    }

    return 0;
}




/*
run:

Stored string: GlobalAlloc memory allocation

*/

 



answered Feb 12 by avibootz

Related questions

...