Есть функция (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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Перемещение pthread_mutex_t в памяти (2014)
- Форум dlsym и malloc (2011)
- Форум обработка ошибок (2005)
- Форум стиль обработки ошибок (2012)
- Форум Обработка ошибок PHP (2010)
- Форум [C] Обработка ошибок (2009)
- Форум Про обработку ошибок (2013)
- Форум Освобождение ресурсов при ошибке (2014)
- Форум Красно-чёрное дерево. Потеря связности блоков памяти (2024)
- Форум Освобождение ресурсов и фатальные ошибки (2008)