【发布时间】:2018-06-21 08:47:30
【问题描述】:
我在审查过程中遇到了一个代码,当我使用 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.");
}
}
谢谢
【问题讨论】:
-
奇怪的代码。尤其是这种情况:
(NULL != pDst). -
@Ron: 是的..很奇怪
-
NULL从一开始就是标准 C++。不知道为什么评论者会遇到麻烦。 @Ron 检查NULL是否传入有什么奇怪的? -
@Ron 有一种相当流行的风格,它更喜欢
==比较左侧的常量,以确保如果程序员不小心键入了=,代码将无法编译。尽管我自己不使用那种风格,但我认为它没有什么奇怪的。 -
@Ron 来自过去,编译器没有在 if 语句中警告
=。将 NULL 放在左边会导致编译错误。