Ловите идиота. Создал структуру на стеке. В ней указатель и массив. Указатель внутри массива. Потом скопировал структуру в коллекцию. Итого массов скопировался ок а указатель теперь указывает куда то на мусор в стеке
Используйте дети индексы внутри массива
char, signed char 16 bits pointers (data) small memory mode 16 bits large memory mode 23 bits pointers (function) 24 bits long long 40 bits Note: C55x Byte is 16 Bits By ISO C definition, the size of operator yields the number of bytes required to store an object. ISO further stipulates that when sizeof is applied to char, the result is 1. Since the C55x char is 16 bits (to make it separately addressable), a byte is also 16 bits. This yields results you may not expect; for example, sizeof (int) == 1 (not 2). C55x bytes and words are equivalent (16 bits).
С лора https://www.linux.org.ru/forum/development/16872850?cid=16885451