class List {
long j;
public:
List * next;
List * previous;
virtual long jj() {
return this->j;
}
List() {
next = previous = 0;
j = 0;
}
virtual ~List() {
if (next) {
next->previous = this->previous;
}
if (previous) {
previous->next = this->next;
}
}
};
#include <iostream>
#include <exception>
using namespace std;
int main(int argc, char **argv) {
cout << "size of List c++ : " << sizeof(List) << endl; //16
List * ptrList = new List();
unsigned long var = 0;
try {
for (;; ++var) {
List * ptrList2 = new List();
ptrList->next = ptrList2;
ptrList2->previous = ptrList;
ptrList = ptrList2;
}
} catch (bad_alloc const& e) {
cout << "caught : " << e.what() << endl;
// } catch (...) { //this won't work either
}
}
Y2xhc3MgTGlzdCB7CiAgICBsb25nIGo7CnB1YmxpYzoKICAgIExpc3QgKiBuZXh0OwogICAgTGlzdCAqIHByZXZpb3VzOwogICAgdmlydHVhbCBsb25nIGpqKCkgewogICAgICAgIHJldHVybiB0aGlzLT5qOwogICAgfQogICAgTGlzdCgpIHsKICAgICAgICBuZXh0ID0gcHJldmlvdXMgPSAwOwogICAgICAgIGogPSAwOwogICAgfQogICAgdmlydHVhbCB+TGlzdCgpIHsKICAgICAgICBpZiAobmV4dCkgewogICAgICAgICAgICBuZXh0LT5wcmV2aW91cyA9IHRoaXMtPnByZXZpb3VzOwogICAgICAgIH0KICAgICAgICBpZiAocHJldmlvdXMpIHsKICAgICAgICAgICAgcHJldmlvdXMtPm5leHQgPSB0aGlzLT5uZXh0OwogICAgICAgIH0KICAgIH0KfTsKCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGV4Y2VwdGlvbj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgY291dCA8PCAic2l6ZSBvZiBMaXN0IGMrKyA6ICIgPDwgc2l6ZW9mKExpc3QpIDw8IGVuZGw7ICAvLzE2CiAgICBMaXN0ICogcHRyTGlzdCA9IG5ldyBMaXN0KCk7CiAgICB1bnNpZ25lZCBsb25nIHZhciA9IDA7CiAgICB0cnkgewogICAgICAgIGZvciAoOzsgKyt2YXIpIHsKICAgICAgICAgICAgTGlzdCAqIHB0ckxpc3QyID0gbmV3ICBMaXN0KCk7CiAgICAgICAgICAgIHB0ckxpc3QtPm5leHQgPSBwdHJMaXN0MjsKICAgICAgICAgICAgcHRyTGlzdDItPnByZXZpb3VzID0gcHRyTGlzdDsKICAgICAgICAgICAgcHRyTGlzdCA9IHB0ckxpc3QyOwogICAgICAgIH0KICAgIH0gY2F0Y2ggKGJhZF9hbGxvYyBjb25zdCYgZSkgewogICAgICAgIGNvdXQgPDwgImNhdWdodCA6ICIgPDwgZS53aGF0KCkgPDwgZW5kbDsKLy8gIH0gY2F0Y2ggKC4uLikgeyAvL3RoaXMgd29uJ3Qgd29yayBlaXRoZXIKICAgIH0KfQ==