Есть функция (C, std=c99), которая работает внутри себя с динамическими данными (выделение памяти, работа с указателями и т.д.) и практически на каждом шаге проверяет корректность работы:
if (cond1) { // e.g., malloc() returned NULL
free(val1);
free(val2);
free_struct(s_val1);
return false;
}
...
if (cond2) { // e.g., realloc() returned NULL
free(val1);
...
free(val10);
free_struct(s_val);
return false;
}
Откровенно говоря, меня эта вербозность несколько анноит, однако, отказываться от проверки ошибок в runtime тоже не хочется. Хотелось бы узнать, как принято решать такие usecases -- думаю, что они не такие уж и редкие? На ум приходит либо использование меток (using goto), или просто делать банальный stdlib.h::abort() вместо освобождения ресурсов, однако, мне кажется это не совсем правильно (да и мой исходный вариант, возможно тоже). Поделитесь опытом, пожалуйста? :)
Спасибо.
Ответ на:
комментарий
от fghj
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от execve
Ответ на:
комментарий
от execve
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от fghj
Ответ на:
комментарий
от execve

Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от execve
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от execve
Ответ на:
комментарий
от fghj
Ответ на:
комментарий
от anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.