Cppcheck 可能的空指针取消引用:
Cppcheck Possible null pointer dereference:
我只是在使用 cppcheck 代码工作正常只是 cppcheck 给出了这个错误。
void WorkerThread(WorkBuffer* m_buffer)
{
std::cout << "Thread : " << m_buffer->m_id << ".....Starting" << std::endl;
if (NULL == m_buffer)
std::cout << "Thread : " << m_buffer->m_id << "......work buffer is null" << std::endl;
while(!shut_down_flag)
{
int k = 0;
//Sleep(1);
SleepSystemUsec(100000);
std::cout << "Thread : " << m_buffer->m_id << "....in while loop" << std::endl;
} // of while(!shut_down_flag)
std::cout << "Thread : " << m_buffer->m_id << ".....Request from main thread so ending working thread ...." << std::endl;
};
错误 :: 可能的空指针取消引用:m_buffer - 否则检查它是否为空是多余的。
if (NULL == m_buffer)
确保 m_buffer
是 NULL
,然后用
取消引用
std::cout << "Thread : " << m_buffer->m_id << "......work buffer is null" << std::endl;
^^^^^^^^^^^^^^^
this,只有当 m_buffer
是 not NULL
时才合法(更准确地说,只有当它指向正确构造的 WorkBuffer
).
如果 NULL
是您的函数的可能输入,您需要在 第一次取消引用之前检查它 然后让它指向有效的东西或保留函数而不取消引用。
不仅你的条件倒退了:
if m_buffer
is NULL
:
do things that dereference m_buffer
(huh?!)
但是您没有检查任何其他输出语句。
我只是在使用 cppcheck 代码工作正常只是 cppcheck 给出了这个错误。
void WorkerThread(WorkBuffer* m_buffer)
{
std::cout << "Thread : " << m_buffer->m_id << ".....Starting" << std::endl;
if (NULL == m_buffer)
std::cout << "Thread : " << m_buffer->m_id << "......work buffer is null" << std::endl;
while(!shut_down_flag)
{
int k = 0;
//Sleep(1);
SleepSystemUsec(100000);
std::cout << "Thread : " << m_buffer->m_id << "....in while loop" << std::endl;
} // of while(!shut_down_flag)
std::cout << "Thread : " << m_buffer->m_id << ".....Request from main thread so ending working thread ...." << std::endl;
};
错误 :: 可能的空指针取消引用:m_buffer - 否则检查它是否为空是多余的。
if (NULL == m_buffer)
确保 m_buffer
是 NULL
,然后用
std::cout << "Thread : " << m_buffer->m_id << "......work buffer is null" << std::endl;
^^^^^^^^^^^^^^^
this,只有当 m_buffer
是 not NULL
时才合法(更准确地说,只有当它指向正确构造的 WorkBuffer
).
如果 NULL
是您的函数的可能输入,您需要在 第一次取消引用之前检查它 然后让它指向有效的东西或保留函数而不取消引用。
不仅你的条件倒退了:
if
m_buffer
isNULL
:
do things that dereferencem_buffer
(huh?!)
但是您没有检查任何其他输出语句。