Правильная сериализация может использоваться для отправки данных в произвольные системы, которые могут не работать в той же архитектуре, что и хост-источник.
Даже объект, который состоит только из нативных типов, может вызывать проблемы при совместном использовании между двумя системами из-за дополнительных дополнений, которые могут существовать между и после членов, среди прочего. Совместное использование необработанных дампов памяти объектов между программами, скомпилированными для одной и той же архитектуры, но с разными версиями компилятора, также может стать большой проблемой. Нет никакой гарантии, как тип переменной T действительно хранится в памяти.
Если вы не работаете с указателями (включая ссылки), и данные предназначены для чтения из того же двоичного файла, из которого они были выгружены, обычно безопасно просто вывести необработанную структуру на диск, но при отправке данных на другой хост .. барабанная дробь сериализация - это путь.
Я слышал, как разработчики говорили о ntohl
/ htonl
/ ntohl
/ ntohs
как о методах сериализации / десериализации целых чисел, и когда вы думаете об этом, говорите, что это не так уж далеко от истины.
Слово " сериализация " часто используется для описания этого " сложного способа хранения данных общим способом ", но опять же; Ваше первое задание на программирование, в котором вас попросили сохранить информацию о Dogs в файл (возможно, *), каким-либо образом использовало сериализацию.
* «надеюсь», что означает, что вы не выгружали необработанное представление памяти вашего Dog
объекта на диск