<cstring> is needed for std::memcpy
resize keeps previous data intact when the buffer grows resize_destructive destroys the previous data when the buffer grows