std::bad_alloc异常一般是在new的时候因为内存不足而引起的
但是数组的越界也会导致在越界代码后进行new,ifstream,ofstream等操作抛出异常
比如如下代码
int *p = new int[0]; for(int i = 0; i < 10; ++i) p[i] = 0; ofstream ofile("test.txt", ios::out); ofile.close(); return 0;
执行到ofstream的时候就出现std::bad_alloc异常