以下SAL批注之间有什么区别?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
最佳答案
PSTR*
out参数表示调用方传入缓冲区,该缓冲区接收指向字符串的指针。
在__deref_out_opt中,字符串是可选的(该函数在调用者提供的缓冲区中放入NULL)。
在__deref_opt_out中,缓冲区是可选的(调用方传递NULL表示对输出值不感兴趣)。
大概可以合并这些概念,为此应该有一个__deref_opt_out_opt
修饰符。