0

我知道出现了很多这样的问题,但我已经尝试/搜索了一切都无济于事。

更新开始

测试班

#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;

}

我试图调用该方法

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);

甚至

    float pEyeX;
float pEyeY;
float pEyeZ;
this->m_pCamera->getEyeXYZ (&pEyeX,&pEyeY,&pEyeZ);

他们显然是我想念的东西,有人可以帮忙吗?

4

3 回答 3

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;
}
于 2012-08-20T18:48:20.317 回答
0

首先要做的是找出导致问题的指针。您报告的症状强烈表明您的thisthis->m_pCamera指针有问题。尝试使用参数pEye...指针不会有任何区别,因为它们可能与问题完全无关。

于 2012-08-20T17:56:55.080 回答
0

那么问题是什么?

第一个块有效,第二个块没有(指向“无处”的指针,在编程中实际上并不存在,所以它们只是指向或多或少的随机位置),第三个块又好了。

于 2012-08-20T17:53:42.137 回答