【发布时间】:2013-04-08 04:43:22
【问题描述】:
#include <iostream>
using namespace std;
int a[4];
int main(){
int b=7;
cout<<a[b]<<endl;
return 0;
}
我试图访问未分配的内存。所以我希望输出是分段错误,而不是输出是一些垃圾值。
后来我将“b”增加到 1000,现在输出是“分段错误”。这种行为是否有特定原因?
我正在使用 gcc-4.3.2 编译器。
【问题讨论】:
-
其未定义的行为。据你所知,它可能会产生纽约下水道老鼠合唱“一”的合唱。有关详细信息,请参阅 this answer 或此论坛上的许多其他人。
-
如果你未定义的行为导致我的扬声器出现热点问题,我会把你扔出窗外。
-
实际发生的情况是编译器将分段错误邮寄给您的母亲,她确切地知道它们是什么,但对您的爱太深而无法表露。
标签: c++ arrays segmentation-fault