【发布时间】:2013-07-01 05:35:39
【问题描述】:
我正在尝试学习一些 C++ 中指针算法的操作。下面编写的代码向我抛出了分段错误。我无法理解程序如何尝试访问未分配的内存来导致分段错误。
C++ 代码 (myarray.cc)
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
int * pointer_s3_1_a;
int * pointer_s3_1_a2;
int value_s3_1_a, value_s3_1_a2 ;
*pointer_s3_1_a=100;
cout<<"pointer_s3_1_a, *pointer_s3_1_a "<<pointer_s3_1_a<<' '<<*pointer_s3_1_a<<endl;
value_s3_1_a=*pointer_s3_1_a++;
cout<<"value_s3_1_a, pointer_s3_1_a, *pointer_s3_1_a "<<
value_s3_1_a<<' '<<pointer_s3_1_a<<' '<<*pointer_s3_1_a<<endl;
cout<<"pointer_s3_1_a2, *pointer_s3_1_a2 "<<pointer_s3_1_a2<<' '<<*pointer_s3_1_a2<<endl;
*pointer_s3_1_a2=100; //Runtime error |** Segmentation fault (core dumped) **|
return 0;
}
我正在使用 g++ 编译器在 Ubuntu 12.04 中运行该程序。在终端上运行 apt-cache policy g++ 给了我以下输出。
g++:已安装:4:4.6.3-1ubuntu5 候选:4:4.6.3-1ubuntu5
版本表:* 4:4.6.3-1ubuntu5 0 500 http://archive.ubuntu.com/ubuntu/ 精确/主要 i386 包 100 /var/lib/dpkg/状态
【问题讨论】:
-
int * pointer_s3_1_a;...*pointer_s3_1_a=100;是 UB。请请通过一本书学习 C++。不要把代码扔进去并期望它能够工作。
标签: c++ pointers g++ segmentation-fault