我正在尝试将SAL添加到我的代码中...我根据 msdn 工作并在 msdn 示例中发现了错误,不知道如何处理它。
这里很少更改来自理解 SAL的示例“指向调用者的指针的输出(示例:Outptr 注释)”
Outptr 用于注释旨在返回指针的参数。参数本身不应为 NULL,并且被调用函数在其中返回一个非 NULL 指针,该指针指向已初始化的数据。
我的代码:
#include "stdafx.h"
#include "assert.h"
void GoodOutPtrCallee(_Outptr_ int **pInt)
{
int *pInt2 = new int;
if (*pInt != NULL)
{
*pInt2 = 1;
}
else
{
*pInt2 = 2;
}
*pInt = pInt2;
}
int _tmain(int argc, _TCHAR* argv[])
{
int* nullValue = NULL;
GoodOutPtrCallee(&nullValue);
assert(*nullValue == 2);
int someValue = 22;
int* someValuePtr = &someValue;
GoodOutPtrCallee(&someValuePtr);
assert(*someValuePtr == 1);
return 0;
}
如果我在启用代码 alalysys 的 VS2013 中编译它,我得到C6001: using uninitialized memory
为了
if (*pInt != NULL)
排。
我的注释中出现了什么问题,我该如何解决?