我编写了一些程序能够编译通过
但在运行时出现一个错误提示对话框
::说某个指令(用十六进制表示)不能对某个内存地址读或者写这是出现了什么错误呢??

解决方案 »

  1.   

    不能对某个内存地址读或者写 ,即指针指向了不属于程序可以调用的内存。
    比如:
    void xxx(int* p)
    {
    int a=0;
    p=&a;
    }
    int main()
    {
    int* p;
    xxx(p);
    cout<<*p;
    return 0;
    }
    会出错

    int main()
    {
    int* p;
    int a=0;
    p=&a;
    cout<<*p;
    return 0;
    }
    不会出错
    因为第一个程序中的a为临时变量,存放于栈中,当xxx函数调用结束后,a的地址释放
    p就指向了一个它不可以指向的地址。
    类似的还有很多,原理是一样的。