C++ STL位集移位运算符导致分段错误

C++ STL位集移位运算符导致分段错误,c++,stl,segmentation-fault,bitset,C++,Stl,Segmentation Fault,Bitset,考虑以下代码: #包括 #包括 使用名称空间std; int main(){ 常数int N=1e9; 比特集st; 原始代码最有可能导致堆栈溢出:位集可能使用数百兆字节的内存,而系统通常默认为几兆字节的堆栈大小 超出堆栈限制的行为可能因系统而异;在某些情况下,它可能会按照预期工作,而在其他情况下,可能会出现某种信号或崩溃或不可预测的行为 您可以通过使用静态位集st;或动态分配来修复位集的存储。但还有另一个问题。该语句: st << 999; st这可能是堆栈溢出。一个选项是使其s

考虑以下代码:

#包括
#包括
使用名称空间std;
int main(){
常数int N=1e9;
比特集st;

原始代码最有可能导致堆栈溢出:位集可能使用数百兆字节的内存,而系统通常默认为几兆字节的堆栈大小

超出堆栈限制的行为可能因系统而异;在某些情况下,它可能会按照预期工作,而在其他情况下,可能会出现某种信号或崩溃或不可预测的行为

您可以通过使用
静态位集st;
或动态分配来修复位集的存储。但还有另一个问题。该语句:

st << 999;

st这可能是堆栈溢出。一个选项是使其
static
@M.M
static bitset st;
没有完成此工作。这就是您的意思吗?是的。如果您仍然有问题,请在您的计算机上发布@M.M是否使static防止segfault?请不要删除
cout
行,因为编译器试图操作对代码进行优化并防止segfault。这是一个很好的观点,说明堆栈中可能存在数百兆字节,我完全忽略了这一点。显然,关于堆栈溢出,关于大位集崩溃有很多问题。
st << 999;