C++中 指针赋值后 exe程序无法运行


我在Win8中 使用codeblock编写了一段程序。使用的是GCC 4.7 & 4.8 编译器:


 #include <iostream>

using namespace std;

int main()
{
    int *i=0;


    cout<< "Hello world!" << endl;
    return 0;
}

程序可以运行,输出:Hello world。很奇怪的是一旦加入指针赋值语句,编译组建通过,但无法运行。


 int main()
{
    int *i=0;
    *i = 9;

    cout<< "Hello world!" << endl;
    return 0;
}

clipboard.png
控制台上显示为:
Process returned -1073741819 (0xC0000005) execution time : 1.453 s
使用VC++ 6.0 出现了同样的现象

在百度上也没搜到结果。

指针 C++ exe程序

三倍速草泥马 9 years, 8 months ago

刚才运行了几次又想了一下,终于想通了。
错在:
int *i=0; //这里给指针赋了一个空地址 *i = 9; //*i是空地址指针,不能使用
改为如下就正确了:


 int ival=90;
int *i = &ival;
*i=9;

伊藤海灵顿 answered 9 years, 8 months ago

Your Answer