Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何通过Cppcheck解释空指针解引用?_C++_Cppcheck - Fatal编程技术网

C++ 如何通过Cppcheck解释空指针解引用?

C++ 如何通过Cppcheck解释空指针解引用?,c++,cppcheck,C++,Cppcheck,我在查看过程中遇到了一个代码,当我使用cpp check时,它表示一个空指针取消引用错误。我想不出原因。 代码如下: CopyMemory(NULL, dummyMatrixManager.GetConstDataPtr(), dummyMatrixManager.GetNumberOfElements() * sizeof(tFloat)); void CopyMemory( tFloat* pDst, const tFloat* pSrc, const tSize nBytes ) {

我在查看过程中遇到了一个代码,当我使用cpp check时,它表示一个空指针取消引用错误。我想不出原因。 代码如下:

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.");
    }
}

谢谢你

无效的CopyMemory(tFloat*pDst,const tFloat*pSrc,const tSize nBytes)
有两个参数作为指针传递,
pDst
pSrc
。但是,在调用
memcpy(pDst,pSrc,nBytes)
之前,只检查
pDst
是否为
NULL
,而不是
pSrc

void CopyMemory(tFloat*pDst,const tFloat*pSrc,const tSize nBytes)
有两个参数作为指针传递,
pDst
pDst和
pSrc
。但是,在调用
memcpy(pDst,pSrc,nBytes)
之前,只检查
pDst
是否为
NULL
,而不是
pSrc

我是一名Cppcheck开发人员。这个警告可能是错误的,但很难说我什么时候不能复制

我希望您使用的是Cppcheck的最新版本(1.84是最新版本)

默认文本输出没有说明为什么Cppcheck认为存在空指针。您能试试
--template=gcc
吗?您应该能够看到Cppcheck是如何得出存在空指针的结论的

致以最良好的祝愿,
Daniel Marjamäki

我是Cppcheck的开发者。这个警告可能是错误的,但很难说我什么时候不能复制

我希望您使用的是Cppcheck的最新版本(1.84是最新版本)

默认文本输出没有说明为什么Cppcheck认为存在空指针。您能试试
--template=gcc
吗?您应该能够看到Cppcheck是如何得出存在空指针的结论的

致以最良好的祝愿,
Daniel Marjamäki

奇怪的密码。特别是这个条件:<代码>(null!= PDST)< /代码>。@是的。非常奇怪的<代码> null <代码>是,并且从开始以来就是标准C++。不知道为什么评论者对此有问题@Ron检查是否传入了
NULL
有什么奇怪的地方?@Ron有一种相当流行的样式,它更喜欢在
=
比较的左侧使用常量,以确保如果程序员意外键入
=
,代码将无法编译。即使我自己不使用这种风格,我也不认为它有什么奇怪的地方。@Ron是从很久以前开始的,那时编译器没有警告if语句中的
=
。将NULL放在左边会产生编译错误。奇怪的代码。特别是这个条件:<代码>(null!= PDST)< /代码>。@是的。非常奇怪的<代码> null <代码>是,并且从开始以来就是标准C++。不知道为什么评论者对此有问题@Ron检查是否传入了
NULL
有什么奇怪的地方?@Ron有一种相当流行的样式,它更喜欢在
=
比较的左侧使用常量,以确保如果程序员意外键入
=
,代码将无法编译。即使我自己不使用这种风格,我也不认为它有什么奇怪的地方。@Ron是从很久以前开始的,那时编译器没有警告if语句中的
=
。将NULL放在左边会导致编译错误。这没有帮助。Cppcheck仍然在CopyMemory函数调用行显示错误。这没有帮助。Cppcheck仍然在CopyMemory函数调用行显示错误。即使使用template=gcc,我也使用1.84进行了复制。代码见我上面(下面)的答案。即使使用template=gcc,我也使用1.84进行了复制。有关代码,请参见我上面(下面)的答案。