Вы должны изменить
memset (&pointer_p, 0, size); // size = 497 bytes
на
memset (pointer_p, 0, size); // size = 497 bytes
Затем, предполагая, что немного порядковый номер
((char *)pointer_p)[497] = A & 0xFFu;
((char *)pointer_p)[498] = (A >> 8) & 0xFFu;
((char *)pointer_p)[499] = (A >> 16) & 0xFFu;
Для большого порядкового номера просто измените индексы
((char *)pointer_p)[499] = A & 0xFFu;
((char *)pointer_p)[498] = (A >> 8) & 0xFFu;
((char *)pointer_p)[497] = (A >> 16) & 0xFFu;
Непонятно, как это должно работать с вашими U16
элементами.