这个问题是访问了非法内存,网上遇到的同样问题,一般是指针为空,用这个指针去访问数据。
这个错误不能忽略,需要找出代码bug。
我的错误是由于:在API中,通过tempArray的ptr和size来作为中介,读取session通讯得到的数据,但是当API执行完成后,这个对象已经析构,但是我在UT当中仍然想要取到这个临时对象的值,造成了问题。
for (size_t i = 0; i < forwardCoeffsSize; ++i) {
EXPECT_EQ(*(nNISLSCAPI100_getPolynomialScalingParameters_fake.arg2_val)[i],
forwardCoeffs[i]);
}
API:
nNISLSCAPI100_getPolynomialScalingParameters(
sessionObj->getSessionHandle(),
physChans,
&tempForwardCoeffs.ptr,
&tempForwardCoeffs.size,
&tempReverseCoeffs.ptr,
&tempReverseCoeffs.size,
nierr::errStatusThrower());
copyArrayOut(tempForwardCoeffs.ptr, tempForwardCoeffs.size, forwardCoeffs, forwardCoeffsSize, forwardCoeffsSizeOut);
copyArrayOut(tempReverseCoeffs.ptr, tempReverseCoeffs.size, reverseCoeffs, reverseCoeffsSize, reverseCoeffsSizeOut);
tempForwardCoeffs已经析构。
本文探讨了一种常见的编程错误——非法内存访问,通常由空指针引发。具体案例分析了在API调用后,尝试访问已析构对象导致的问题,并提供了代码示例。强调了在单元测试中正确处理对象生命周期的重要性。
2813

被折叠的 条评论
为什么被折叠?



