void *alocare_buffer(int size) { return malloc(size); } void dealocare_buffer(void *buffer) { free(buffer); } /* functia apelata de un fir de execuție */ void functie() { void *buffer = alocare_buffer(512); /* înregistrarea funcției de cleanup */ pthread_cleanup_push(dealocare_buffer, buffer); /* aici au loc prelucrari, și se poate apela pthread_exit sau firul poate fi terminat de un alt fir */ /* deînregistrarea functiei de cleanup și execuția ei (parametrul dat este nenul) */ pthread_cleanup_pop(1); }