int main(){
    int i=0;
    for(;i<200000;i++){
        char *p = new char[1000 * 1000 * 1000];
    }
    cout<<"i="<<i<<endl;
}
./b
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)

[postgres@local ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1817         198        1544          11          75        1503
Swap:          2107         449        1658

[postgres@local ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1817        1364         377          11          74         336
Swap:          2107         960        1147

捕获异常代码

#include <cstdio>
#include <iostream>
using namespace std;
#include <chrono>
#include <thread>
int main(){
    int i=0;
    try{
        for(;i<200000;i++){
            char *p = new char[1000 * 1000 * 1000];
        }
    }
    catch( bad_alloc &ba)
    {
        cout << ba.what( ) << endl;
        cout<<"sleep 2"<<endl;
        std::this_thread::sleep_for(std::chrono::seconds(2));
        cout<<"i="<<i<<endl;
    };
}

./b
std::bad_alloc
sleep 2
i=140735