Каждый раз, когда вы сериализуете структуру данных, содержащую указатели, вам необходимо преобразовать эти указатели в нечто иное, чем указатели.Одна возможность состоит в том, чтобы превратить их в смещения в потоке данных;другая возможность состоит в том, чтобы полностью удалить их и положиться на организацию самого потока.В любом случае, вам нужно записать формат сериализации с большой точностью;эмпирическое правило: кто-то должен иметь возможность писать код с нуля, который либо производит, либо использует сериализацию без любой информации, кроме той, которую вы пишете.структуры данных, которые вы продемонстрировали:
# Each row is a 32-bit unsigned value in network byte order.
| number of pairs following |
| [0].value1 |
| [0].value2 |
| [1].value1 |
| [2].value2 |
...
| [N].value1 |
| [N].value2 |
Хорошие примеры - как делать такие вещи, так и как их документировать - можно найти в RFC TCP и IP или в спецификации PNG.*