Меня немного пугает способ выделения памяти в С++ тем что заранее нужно указывать тип данных в памяти.
Я программируя на PureBasic привык к тому что можно выделить память
*Buffer=AllocateMemory(1024)
И запихать туда различные типы данных
PokeI(*Buffer+0, 1)
PokeF(*Buffer+4, 1.5)
PokeS(*Buffer+8, "Строка", 6)
Хотя наверняка есть подобный же способ работы и на С++. Удобно это тем что можно передать *Buffer в виде пакета по проводу и прочитать в том же порядке.