Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
Online Examples (C, C++)

Online Examples (C, C++)

Благодаря проекту Compiler Explorer вы можете быстро подготовить синтетические примеры C и C++ кода, и посмотреть, как на них поведёт себя анализатор PVS‑Studio.

Перед вами пример кода, содержащий две ошибки и демонстрирующий возможности PVS‑Studio в анализе потока данных.

Во-первых, код содержит опечатку, из-за которой в переменную 'a' дважды подряд записываются адреса двух выделенных буферов памяти. Это приводит к потере одного указателя, и анализатор предупреждает об утечке памяти. Ещё одно последствие опечатки – разыменование нулевого указателя внутри функции 'use'.

Во-вторых, память была выделена с помощью оператора 'new', а освобождается с помощью вызова функции 'free'.

Анализатор выдаёт предупреждения, выявляющие все эти дефекты:

  • V522 Dereferencing of the null pointer 'p' might take place. The null pointer is passed into 'use' function. Inspect the first argument. Check lines: 7, 18.
  • V773 The 'a' pointer was assigned values twice without releasing the memory. A memory leak is possible.
  • V519 The 'a' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 14, 15.
  • V611 The memory was allocated using 'new' operator but was released using the 'free' function. Consider inspecting operation logics behind the 'a' variable.

Другие примеры

Мы подготовили ещё несколько примеров, демонстрирующих различные диагностические возможности анализатора PVS‑Studio:

Вы можете как модифицировать предложенные нами примеры, так и составить совершенно новые.

Использование

Несколько вариантов того, что можно сделать с помощью online-запуска анализатора PVS‑Studio:

  • Поэкспериментировать с диагностическими возможностями анализатора;
  • Сгенерировать постоянную ссылку на пример срабатывания при помощи кнопки "Share" и прислать её другу или коллеге;
  • При общении с нашей командой в поддержке можно подготовить полноценный пример кода, демонстрирующий проблему, и прислать его с помощью постоянной ссылки;
  • Подготавливать наглядные примеры для статей, посвященных статическому анализу кода.

Чего не стоит пытаться делать:

  • Сравнивать работу статических анализаторов на основании синтетических примеров. Анализаторы чувствительны к тому, как написаны короткие синтетические примеры кода, и работа на них может отличаться от того, как покажет себя анализатор на реальной кодовой базе. См. статью "Анализатор PVS-Studio на сайте godbolt.org и предостережение".
  • Пытаться оценить, насколько анализатор PVS‑Studio подходит для вашего проекта. Самый лучший способ - скачать демонстрационную версию анализатора и провести анализ кодовой базы. Также напомним, что PVS‑Studio – это не только диагностики, но и развитая инфраструктура, интеграция с Visual Studio, Rider, TeamCity, PlatformIO, Azure DevOps, Travis CI, CircleCI, GitLab CI/CD, Jenkins, SonarQube и т.д.

Студентам и преподавателям на заметку

Compiler Explorer очень удобно использовать для выполнения коротких лабораторных работ по программированию. Можно написать код, проверить, что он компилируется, запустить его и увидеть результат работы. Затем можно создать ссылку и отправить для проверки преподавателю.

Теперь ко всему этому прибавилась ещё и возможность проверить код с помощью PVS‑Studio и тем самым познакомиться с методологией статического анализа. Мы знаем, что PVS-Studio активно бесплатно используется студентами и преподавателями. Теперь для тех, кто использует Compiler Explorer для обучения языку C и C++, применять PVS‑Studio станет совсем просто и удобно.

Дополнительные ссылки

close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам