我在审阅过程中遇到了一个代码,当我使用cpp检查时,它指出了空指针取消引用错误。我不知道原因。 下面是代码:
CopyMemory(NULL, dummyMatrixManager.GetConstDataPtr(), dummyMatrixManager.GetNumberOfElements() * sizeof(tFloat));
void CopyMemory( tFloat* pDst, const tFloat* pSrc, const tSize nBytes )
{
// copy data if pointer to this memory is valid
if (NULL != pDst)
{
memcpy(pDst, pSrc, nBytes);
}
else
{
LOG_ERROR("No Data copied because memory was not properly allocated. Destination pointer was set to NULL.");
}
}
谢谢
答案 0 :(得分:3)
void CopyMemory( tFloat* pDst, const tFloat* pSrc, const tSize nBytes )
有2个作为指针传递的参数pDst
和pSrc
。但是,在调用memcpy(pDst, pSrc, nBytes)
之前,仅检查pDst
而不是NULL
来检查pSrc
。
答案 1 :(得分:1)
我是Cppcheck开发人员。警告可能是错误的,但是当我无法复制时,很难说。
我希望您使用的是最新版本的Cppcheck(最新版本为1.84)。
默认文本输出并没有说明Cppcheck认为存在NULL指针的原因。您可以尝试--template=gcc
吗?您应该能够看到Cppcheck如何得出结论,那就是存在空指针。
最好的问候, DanielMarjamäki