我在下面的代码中出现access violation错误。我已在程序中指出了该错误。

void *pBuff = 0;

void set_data(void *pBuff)
{
    int value = 70, i;
    int *phy_bn = new int[8];

    for(i=0; i<8; i++)phy_bn[i] = value;

    pBuff =phy_bn;
    cout<<((int*)pBuff)[0];//..accessing 0th element value..no error here..gives 70 as result..
}


int main()
{
    set_data(pBuff);
    cout<<((int*)pBuff)[0];//acces violation error
    return 0;
}


为什么即使我没有为它分配局部变量的地址,也会发生访问冲突...

是的,我可以使用vectorpass by reference

但是我想知道为什么没有分配pBuff

最佳答案

当你说

pBuff = phy_bn;


您只是在更改pBuff的本地值,而不是pBuff的全局值。可以将pBuff作为双指针传递,也可以直接删除该函数的参数,因为pBuff已经是全局的。

void *pBuff = 0; /* This is the global pBuff, which isn't being changed */

void set_data(void *pBuff /* This is the local pBuff, which is being changed */)
{
    ...
    pBuff = phy_bn;
    ...
}

关于c++ - 为什么这种访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13402646/

10-09 04:10