почему этот код вызывает предупреждение окна защитника SEVERETrojan - PullRequest
0 голосов
/ 19 апреля 2020

Я изучаю c ++ Pointer с использованием Notpad и командной строки, компилирую с помощью g ++, выполняю файл (a.exe производит с помощью g ++). когда я играю код, удалив "mypointer = & firstvalue;" Защитник окна выскакивает предупреждение «Троян: Win32 / Fuery. C! Cl» и блокирует a.exe. (Появляется постоянно, когда я набираю ie код)

#include <iostream>
using namespace std;

int main ()
{
  int firstvalue, secondvalue;
  int * mypointer;

  mypointer = &firstvalue;//this is the part I deleted//
  *mypointer = 10;
  mypointer = &secondvalue;
  *mypointer = 20;
  cout << "firstvalue is " << firstvalue << '\n';
  cout << "secondvalue is " << secondvalue << '\n';
  return 0;
}

// code comes from http://www.cplusplus.com/doc/tutorial/pointers/

Интересно, почему это вызывает проблему.

1 Ответ

0 голосов
/ 19 апреля 2020

Ваш основной начинается с неинициализированного mypointer int указателя.

Неинициализированный указатель - это указатель, который не был инициализирован: значением может быть любое нежелательное значение. Прочитайте эту страницу документации.

Поэтому, когда вы отменяете ссылку на неинициализированный указатель (потому что вы сказали, что удалили строку, которая его инициализирует), вы получите неопределенное поведение (UB) . И UB это плохо: все может случиться!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...