Сериализация указателя

268
12 августа 2021, 11:00

Пишу небольшую библиотеку для сериализации объекта (задали в универе) в xml файл. С обычными типами данных я разобрался и работает все хорошо. Но проблема заключается в сериализации указателя на целое число и указателя на экземпляр класса. Мне нужно их как-то сериализовать, чтобы после десериализации данные сохранились, т.е. указатели указывали на адрес того же значения.

Я думаю может при сериализации писать в атрибутах, что указатель указыват например на адрес переменной x, но как это лучше обыграть я не понимаю.

Подскажите какую-нибудь хорошую идею.

Answer 1

Вам нужно при сериализации сохранять те данные, на которые указывает указатель, а при десериализации эти данные загружать. Очевидно, что у вас не получится заставить (без дополнительных ухищрений) машину выделить память по тем же адресам, что были при другом запуске программы. Современные ОС намеренно рандомизуют адреса в программах, чтобы усложнить их взлом и реверс.

Дополнительной сложностью будет тот факт, что где-то в программе ваши указатели могут быть сохранены, например, связный список вы просто так не сохраните - развалится.

Отсюда следует, что не всегда структура данных после сериализации должна повторять структуру, которая хранится в памяти.

Ответьте для себя на такие вопросы:

  • как я буду хранить массив
  • как я буду хранить связный список
  • как я буду хранить дерево
  • как хранить std::map

Подскажу про связный список - нужно сохранить количество элементов и сами элементы, а при загрузке - создать связный список полностью заново, залив в него данные, выделив память под каждый элемент и настроив все указатели.

Еще одна идея - выделять для интов память в специальном массиве, а везде в программе хранить не указатели, а номера этих интов в том самом массиве - тогда, при некоторых обстоятельствах, у вас ничего не сломается.

READ ALSO
убрать класс если он есть

убрать класс если он есть

Привет всем помогите пожалуйста новичку

107
homeslider.owlCarousel is not a function

homeslider.owlCarousel is not a function

Добрый день дорогие друзья ,проблема заключается в том что при использовании OwlCarousel в wordpress-е вот такая ошибка:

125
SVG Привязка растровых объектов к пути (path)

SVG Привязка растровых объектов к пути (path)

Не могу найти информацию по привязке объекта к пути

435