我知道会出现大量这些问题,但我已经尝试/搜索过一切都无济于事。
更新开始
测试类
#include "stdafx.h"
#include "testerClasser.h"
Tester::Tester(){
}
void Tester::GetNum(int * num){
int num2 = 6;
*num = num2;// error thrown here
}
调用GetNum函数的示例
int _tmain(int argc, _TCHAR* argv[])
{
int* num = NULL;
Tester* tester = new Tester();
tester->GetNum(num);
return 0;
}
错误Tester.exe中0x77c115de处的未处理异常:0xC0000005:访问冲突写入位置0x00000000。 更新结束
我有一个方法
void CCCamera::getEyeXYZ(float *pEyeX, float *pEyeY, float *pEyeZ)
{
*pEyeX = m_fEyeX;
*pEyeY = m_fEyeY;
*pEyeZ = m_fEyeZ;
*pEyeX = m_fEyeX;
*pEyeY = m_fEyeY;
*pEyeZ = m_fEyeZ;
我试图调用方法
}
和
float* pEyeX = new float(10);
float* pEyeY= new float(10);
float* pEyeZ= new float(10);
this->m_pCamera->getEyeXYZ (pEyeX,pEyeY,pEyeZ);
甚至
float* pEyeX;
float* pEyeY;
float* pEyeZ;
this->m_pCamera->getEyeXYZ (pEyeX,pEyeY,pEyeZ);
他们显然是我所缺少的,任何人都可以帮忙吗?
答案 0 :(得分:5)
在以下代码中,您尝试取消引用NULL
函数内的GetNum
指针。
int _tmain(int argc, _TCHAR* argv[])
{
int* num = NULL;
Tester* tester = new Tester();
tester->GetNum(num); //will result in NULL pointer dereference inside GetNum!
return 0;
}
您最需要的是:
int _tmain(int argc, _TCHAR* argv[])
{
int num = 0;
Tester* tester = new Tester();
tester->GetNum(&num); // pass a pointer to local variable
return 0;
}
答案 1 :(得分:0)
那么问题是什么?
第一个块工作,第二个块不工作(指针'无处',实际上并不存在于编程中,因此它们只是指向或多或少的随机位置),第三个块再次正常。
答案 2 :(得分:0)
要做的第一件事就是找出导致问题的指针。您报告的症状强烈表明您的this
或this->m_pCamera
指针存在问题。尝试使用参数pEye...
指针将没有任何区别,因为它们可能与该问题毫无关系。