Ja, nu giver det jo mening.
Du skal først free(pptr) når du er færdig med det hukommelse som pptr peger på, uanset om du sætter ptr til at pege på det.
Et komplet eksempel:
#include <stdlib.h>
unsigned int ncols = 10;
unsigned int nrows = 10;
int *pptr = NULL;
int **ptr = NULL;
int main()
{
int x;
pptr = (int *)malloc(ncols * nrows * sizeof(int));
if (pptr == NULL) exit(0);
ptr = (int **)malloc(nrows * sizeof(int *));
if (ptr == NULL) exit(0);
for (x = 0; x < nrows; x++)
{
ptr[x] = pptr + (x * ncols);
}
/* Brug ptr[] */
free(pptr);
free(ptr);
}