Аннотации SAL приведут к тому, что компилятор сообщит об ошибке? - PullRequest
0 голосов
/ 15 октября 2018

Я изучаю аннотации SAL, я тестировал этот пример в Visual Studio 2017.

Я думал, что компилятор выдаст предупреждение или ошибку, когда я передам NULL-указатель на InCallee, однако он все еще может построитьПравильно. Поэтому мой вопрос заключается в том, похожа ли SAL на комментарии к коду и не проверяет законность данных, или она может проверять данные только потому, что я сделал что-то не так?

void InCallee(_In_ int *pInt) //_In_ is allowed to be NULL 
{
   int i = *pInt;
}

void GoodInCaller()
{
   int *pInt = new int;
   *pInt = 5;

   InCallee(pInt);
   delete pInt;
}

void BadInCaller()
{
   int *pInt = NULL;
   InCallee(pInt); // pInt should not be NULL
}
...