SAL注释和指针参数

时间:2013-08-30 17:40:27

标签: c++ static-analysis sal

我一直在阅读SAL,我不清楚指针类型的注释是否适用于引用或它指向的值。例如,如果我有:

void f(_In_ type* t);

_In_表示“参数必须在预先状态下有效且不会被修改。”这里的应用是否意味着t的地址不会改变,或者t的值是多少?

1 个答案:

答案 0 :(得分:4)

在您的示例中,_In_表示

  • VS Code Analysis将验证调用者是否将非空指针传递给初始化缓冲区。
  • VS代码分析将验证t是否在函数中取消引用之前检查为null;假定t在函数本身中为非null。通过将_In_更改为_In_opt_,VS代码分析验证t在取消引用之前检查为空。
  • VS Code Analysis将验证该函数仅从type指向的内存中读取t的“一个元素”,就像将解除引用的指针的值赋给变量一样。