Мне не удалось правильно передать вектор указателей
В этом суть проблемы.Вызываемый C API не ожидает вектор указателей, он ожидает вектор структур.
В частности, этот бит ...
unsigned int arr_sz;
info_a *arr;
... ожидаетнаходить arr_sz
структуры в памяти, одна за другой, начиная с arr
.
Ваш код распределяет все структуры по отдельности, а затем сохраняет адрес первой в arr
.Затем код печати выходит из конца arr[0]
, ожидая найти следующую структуру, но, поскольку вы распределили их по отдельности, они сохраняются, кто знает, где в памяти.
Для того, чтобы это исправитьчто бы вы ни делали, вы должны создать эквивалент std::vector<info_a>
(который затем можно обернуть info_b
, как вид массива).Это то, что дает вам гарантию того, что структуры фактически смежны в памяти.