Проблема заключается в том, что оба утверждения очень правильны с 'c', и нет возможности уловить их в языке. malloc
- это просто функция, которую программа вызывает для выделения некоторого объема памяти. Компилятор ничего не знает об этом, не проверяет и не заботится. Единственный способ обойти это - использовать хороший стиль программирования, как упоминалось в других ответах об использовании другого языка программирования со встроенным управлением памятью, например java, c#, ...
Однако, Существует множество бесплатных и коммерческих инструментов stati c и dynamic c linting (например, очистить, cppcheck, clang stati c анализатор, ...), доступных для 'c' и "с ++". Возможно, вам нужно изучить их и использовать как часть методологии сборки. Они должны быть в состоянии уловить эти проблемы. И, как уже упоминалось, valgrind
- это бесплатная динамическая c программа проверки.