Я начинаю использовать библиотеку flatbuffer. Но есть вещь, которая мне неудобна, когда дело доходит до удаления буфера. Я не знаю, как удалить буфер через элемент root-pointer-element. Если бы это было возможно, корневой указатель мог бы взять на себя ответственность за выделенное пространство, и я бы не стал беспокоиться о проблемах времени жизни (висящий корневой указатель, утечки памяти, …)
std::uint_8* buffer = get_buffer_for_exaple_from_file("my_monster.bin");
auto monster = MyGame::Sample::GetMonster(buffer);
///monster points somewhere in buffer
...
///now this would be very handy
delete_buffer(monster); ///buffer is deleted
Q: Возможно ли (возможно, с некоторыми ограничениями, так как монстр не изменчив и т. Д.) Написать что-то вроде delete_buffer
Корневой указатель указывает на местоположение внутри буфер, который не находится в известном смещении, поэтому нет, вы не можете удалить буфер через него. Чтобы удалить буфер, вы должны использовать оригинальный указатель буфера.
Других решений пока нет …