222просмотров
27 августа 2023 г.
Score: 244
Продолжение. В таком случае нам на помощь приходит std::bit_cast , либо его аналог написанный вручную:
#include <cstdint>
#include <cstring>
#include <iostream> struct Person { int age; char cityInfo[4];
}; struct City { long id;
}; int main() { Person me; City city; std::memcpy(&city, &me.cityInfo, sizeof(City)); std::cout << city.id << std::endl; return 0;
} И хоть в данном случае мы и выделили на стеке память под новую структуру, в реальности в большинстве случаев компилятор может оптимизировать данное выделение. Все примеры вы можете найти тут: https://github.com/PatriosTheGreat/cppchannel/tree/main/ub_cast