Здравствуйте, такой вопрос есть union и его использование
union
{
char buffer[5];
} Databuffer;
template <typename T>
void construct(const T& v)
{
new(&Databuffer.buffer[0]) T(v);
}
template <typename T>
T& get()
{
return *(T *)&Databuffer.buffer[0];
}
template <typename TT>
static void copy(void *dst,const void *src){
*(TT *)dst = *(TT *)src; \
}
..................................................
{
std::string ss("1233445566678912334455666789123344556667891233445566678912334455666789");
construct<std::string>(ss);
}
std::string str = get<std::string>();
{
std::string ss("1233445566678912334455666789123344556667891233445566678912334455666789");
copy<std::string>(Databuffer.buffer, &ss);
}
std::string str1 = get<std::string>();
собственно вопрос каким образом происходит выделение памяти в buffer?