1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <type_traits> #include <stdexcept> #include <memory> #include <iostream> struct T { int val; T() = delete; T(int i) : val(i) {} void* operator new[](std::size_t, std::size_t cnt, const T& t) { typedef std::aligned_storage<sizeof(t), std::alignment_of<T>::value>::type buf; T* ptr = reinterpret_cast<T*>(new buf[cnt]); std::uninitialized_fill_n(ptr, cnt, t); return ptr; } }; int main() { T* a = new(100, T(7)) T[0]; // using zero is legal per 5.3.4/7 std::cout << "a[0] = " << a[0].val << '\n' << "a[1] = " << a[1].val << '\n' << "a[98] = " << a[98].val << '\n' << "a[99] = " << a[99].val << '\n'; delete[] a; // I know this won't call the 100 destructors, but it will free the 100 aligned_storages at least } |
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8c3RkZXhjZXB0PgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdHJ1Y3QgVCB7CiAgIGludCB2YWw7CiAgIFQoKSA9IGRlbGV0ZTsKICAgVChpbnQgaSkgOiB2YWwoaSkge30KICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90IGNudCwgY29uc3QgVCYgdCkKICAgewogICAgICAgdHlwZWRlZiBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YodCksCiAgICAgICAgICAgICAgICAgICAgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBidWY7CiAgICAgICBUKiBwdHIgPSByZWludGVycHJldF9jYXN0PFQqPihuZXcgYnVmW2NudF0pOwogICAgICAgc3RkOjp1bmluaXRpYWxpemVkX2ZpbGxfbihwdHIsIGNudCwgdCk7CiAgICAgICByZXR1cm4gcHRyOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBUKiBhID0gbmV3KDEwMCwgVCg3KSkgVFswXTsgLy8gdXNpbmcgemVybyBpcyBsZWdhbCBwZXIgNS4zLjQvNwoKICAgIHN0ZDo6Y291dCA8PCAiYVswXSA9ICIgPDwgYVswXS52YWwgPDwgJ1xuJwogICAgICAgICAgICAgIDw8ICJhWzFdID0gIiA8PCBhWzFdLnZhbCA8PCAnXG4nCiAgICAgICAgICAgICAgPDwgImFbOThdID0gIiA8PCBhWzk4XS52YWwgPDwgJ1xuJwogICAgICAgICAgICAgIDw8ICJhWzk5XSA9ICIgPDwgYVs5OV0udmFsIDw8ICdcbic7CiAgICBkZWxldGVbXSBhOyAvLyBJIGtub3cgdGhpcyB3b24ndCBjYWxsIHRoZSAxMDAgZGVzdHJ1Y3RvcnMsIGJ1dCBpdCB3aWxsIGZyZWUgdGhlIDEwMCBhbGlnbmVkX3N0b3JhZ2VzIGF0IGxlYXN0Cn0K
-
upload with new input
-
result: Success time: 0s memory: 2960 kB returned value: 0
a[0] = 7 a[1] = 7 a[98] = 7 a[99] = 7


