我在下面的代码中出现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;
}
为什么即使我没有为它分配局部变量的地址,也会发生访问冲突...
是的,我可以使用
vector
或pass 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/