如何捕获" free():无效指针:"

时间:2017-06-08 00:32:56

标签: c++ pointers try-catch

如何捕获/检查/测试无效指针?

m_gTest在.h文件中声明
没有初始化

try
{
    delete m_gTest;
}
catch(...)
{
    std::cout << "catch" << '\n';
}

而不是抓住它

free(): invalid pointer: 0x00000000006053b8 ***

如何捕获/检查/测试无效指针?

temp[i] = m_gTest[i];

不会导致错误,但如果m_gTest无效,则放入temp的任何内容都将出错

o,并已使用

if(m_gTest != NULL)

1 个答案:

答案 0 :(得分:2)

通常无法检查指针是否有效&#34;仅给出指针。当然,在&#34;无效&#34;上调用删除指针不会抛出异常,除非是通过未定义的行为。

基本上,您的代码需要明确跟踪指针是否有效&#34;或不。或者更好地使用智能指针,例如std :: unique_ptr。