Я в первую очередь имею в виду принудительное завершение
ОС при доступе к памяти
нарушение, из-за неправильного ввода передано
пользователем
Не уверен, кто "пользователь".
Вы можете писать программы, которые не будут аварийно завершать работу из-за неправильного ввода данных конечным пользователем. В некоторых системах вас могут принудительно прекратить из-за использования слишком большого количества памяти (или из-за того, что какая-то другая программа использует слишком много памяти). И, как говорит Ремус, нет языка, который мог бы полностью защитить вас от сбоев оборудования. Но эти вещи зависят от факторов, отличных от байтов данных, предоставленных пользователем.
То, что вы не можете легко сделать в C ++, это доказать , что ваша программа не будет аварийно завершать работу из-за неправильного ввода или работать еще хуже, создавая серьезные недостатки безопасности. Поэтому иногда [*] вы думаете, что ваш код защищен от любого ввода, но оказывается, что это не так. Ваш разработчик может иметь в виду это.
Если ваш код является функцией, которая принимает, например, указатель на данные изображения, то ничто не мешает вызывающей стороне передать вам недопустимое значение указателя:
char *image_data = malloc(1);
free(image_data);
image_processing_function(image_data);
Так что функция сама по себе не может быть «защищенной от сбоев», она требует, чтобы остальная часть программы не делала ничего, чтобы она вылетала. Ваш разработчик также может иметь это в виду, поэтому, возможно, вам следует попросить его уточнить.
Java решает эту конкретную проблему, делая невозможным создание недопустимой ссылки - вы не можете вручную освободить память в Java, поэтому, в частности, вы не можете сохранить ссылку на нее после этого. Он имеет дело с множеством других специфических проблем другими способами, так что ситуации, которые являются «неопределенным поведением» в C ++ и могут привести к сбою, будут делать что-то другое в Java (возможно, будет исключение).
[*] давайте посмотрим правде в глаза: на практике в крупных программных проектах "часто".