Přestože jsou ukazatele při deklaraci vztaženy ke konkrétnímu datovému typu, umožňuje jazyk C definovat také ukazatel (ukazatel na typ void), který není vázán ke konkrétnímu typu.
S takovým ukazatele pak lze některé operace provádět pouze při uvedení explicitní konverze. V praxi se tyto ukazatele používají převážně při deklaracích a definicích funkcí, které pracují s daty libovolných typů. Příklad:
void *moje_pamet; ((int *)moje_pamet)++;
Všechny níže uvedené funkce jsou definovány v knihovně stdlib.h. Při výpočtu velikosti bloku se v praxi hojně využívá operátor sizeof. Pokud není možné paměť alokovat, vrací níže uvedené funkce hodnotu NULL (ukazatel na nulovou adresu).
void *malloc(size_t size);
Funkce alokuje paměť velikosti size a vrátí ukazatel na danou oblast paměti.
void *calloc(size_t items, size_t size);
Funkce alokuje paměť pro items prvků o velikosti size (tedy items*size bytů),
navíc tuto paměť vyplní nulami.
void *realloc(void* old, size_t size);
Funkce zajišťující změnu velikosti dříve alokovaného bloku paměti old na
velikost size. Data původního bloku paměti budou zkopírována do nově
alokovaného.
void free(void* block);
Funkce pro uvolnění paměti block.
Používá se vždy, když víme, že už danou paměť nebudeme v programu používat.
—- cc,upol