#include <iostream>
#include <cstdint>
struct Three {
char* a = "hello world!";
char* b = "hesoyam!";
char* c = "showmethemoney!";
};
int main() {
int size = 3;
auto c = (Three*)std::malloc(size * sizeof(Three*));
for(int i = 0;i < size; ++i) {
c[i] = Three();
}
auto lastElementAddress1 = reinterpret_cast<uintptr_t>(c + (size - 1));
auto lastElementAddress2 = reinterpret_cast<uintptr_t>(c + (size - 1) * sizeof(Three));
auto lastElement1 = reinterpret_cast<Three*>(lastElementAddress1);
auto lastElement2 = reinterpret_cast<Three*>(lastElementAddress2);
std::cout << "v1: " << lastElement1->a << std::endl;
std::cout << "v2: " << lastElement2->a << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KCnN0cnVjdCBUaHJlZSB7CgljaGFyKiBhID0gImhlbGxvIHdvcmxkISI7CgljaGFyKiBiID0gImhlc295YW0hIjsKCWNoYXIqIGMgPSAic2hvd21ldGhlbW9uZXkhIjsKfTsKCmludCBtYWluKCkgewoJaW50IHNpemUgPSAzOwoJYXV0byBjID0gKFRocmVlKilzdGQ6Om1hbGxvYyhzaXplICogc2l6ZW9mKFRocmVlKikpOwoJCglmb3IoaW50IGkgPSAwO2kgPCBzaXplOyArK2kpIHsKCQljW2ldID0gVGhyZWUoKTsKCX0KCQoJYXV0byBsYXN0RWxlbWVudEFkZHJlc3MxID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGMgKyAoc2l6ZSAtIDEpKTsKCWF1dG8gbGFzdEVsZW1lbnRBZGRyZXNzMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjICsgKHNpemUgLSAxKSAqIHNpemVvZihUaHJlZSkpOwoJCglhdXRvIGxhc3RFbGVtZW50MSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGhyZWUqPihsYXN0RWxlbWVudEFkZHJlc3MxKTsKCWF1dG8gbGFzdEVsZW1lbnQyID0gcmVpbnRlcnByZXRfY2FzdDxUaHJlZSo+KGxhc3RFbGVtZW50QWRkcmVzczIpOwoJc3RkOjpjb3V0IDw8ICJ2MTogIiA8PCBsYXN0RWxlbWVudDEtPmEgPDwgc3RkOjplbmRsOwoJc3RkOjpjb3V0IDw8ICJ2MjogIiA8PCBsYXN0RWxlbWVudDItPmEgPDwgc3RkOjplbmRsOwoJCglyZXR1cm4gMDsKfQ==