Предположим, что у меня есть функция, которая выделяет память для вызывающего:
int func(void **mem1, void **mem2) {
*mem1 = malloc(SIZE);
if (!*mem1) return 1;
*mem2 = malloc(SIZE);
if (!*mem2) {
/* ... */
return 1;
}
return 0;
}
Я хотел бы услышать ваши отзывы о наилучшем способе освобождения() выделенной памяти в случае неудачи второго malloc(). Вы можете представить более сложную ситуацию с большим количеством точек выхода из-за ошибки и более выделенной памяти.