﻿# V2014\. Don't use terminating functions in library code\.

Данное диагностическое правило добавлено по просьбе пользователей\. Эта диагностика весьма специфична и предназначена для проверки кода библиотек\.

Есть функции, которые прерывают или могут прерывать выполнение программы\. Использовать их в своей программе хоть и некрасиво, но вполне можно, т\.к\. автор программы знает, чего он хочет и что делает\.

А вот использовать эти функции в библиотеках нельзя\! Неизвестно, как и где библиотека будет использоваться\. Будет плохо, если библиотека завершит программу, и пользователь потеряет данные\. Библиотеки в случае ошибок должны возвращать статус ошибки или кидать исключение, но не прекращать работу программы\.

Рассмотрим пример:

```cpp
char *CharMallocFoo(size_t length)
{
  char *result = (char*)malloc(length);
  if (!result)
    abort();
  return result;
}
```

Функция 'CharMallocFoo' прервёт выполнение программы в случае неудачной попытки выделить динамическую память\. Как вариант, лучше возращать из фукнции нулевой указатель для обработки такой ситации пользователем библиотеки\.