calloc

malloc(16) gives you 16 bytes of garbage. calloc(4, 4) gives you 16 bytes of zeros. Same size, different starting state.

malloc(16)           calloc(4, 4)
┌─────────────┐      ┌─────────────┐
│ ???garbage? │      │ 0 0 0 0 0 … │
└─────────────┘      └─────────────┘

Useful for pointer arrays where you want every slot to start as NULL, or large buffers you’d otherwise have to memset yourself.