记录一些编码过程中尚不清楚为什么的问题(比如C++语言and so on),欢迎看到的热心大佬敲敲我告诉我为什么……

bad_alloc && 数组越界

今天在开发某个项目的时候遇到std::bad_alloc导致terminate,然而印象中这个似乎是内存耗尽才会报的错所以百思不得其解,直到之后发现修改了数组越界(C-style array)之后该问题得以解决。然而,按我的经验似乎数组越界并不会报出该错误,于是上网搜索发现了该文章:数组越界造成的std::bad_alloc中断

我的项目确实在数组越界之后调用了ofstream,感觉这个真相了。然而,我又按着它和我的思路怎么复现都没复现出来很难崩……而且也不大清楚它的原理是什么

1
2
3
4
5
6
7
8
9
int main(){
std::ofstream ofile("test.txt");
std::string p[5];
std::string tmp;
tmp = p[10];
ofile << "haha" << tmp;
ofile.close();
return 0;
}

总之,暂时是一个悬而未决的问题……