我对 SAL 注释和新运算符重载有疑问。我想提供新的运算符,它不会引发异常,但在出现错误时返回 nullptr。我已经写了:
_Check_return_ _Ret_maybenull_ _Success_(return != nullptr) void* operator new(_In_ size_t size)
{
return malloc(size);
}
不幸的是,VS2012 看到 <new> 标头中提供的新声明是不同的,并且在 Build->Run Code Analysis 之后给了我很多声明不兼容的错误。此外,它选择 <new> 中提供的声明,表明 new 永远不会返回 null。我试图删除 <new> 包含但它没有帮助(它包含在不同的标题中,如 <vector>)。如何说服编译器使用我的 SAL 注释?