Vladimir-80, вам нужно получить массив строк
char** pins;, такой что
pins[0],
pins[1], ... - c-строки с пинами. Для этого нужно, очевидно, выделить память под сам массив
pins, выделить память под строки и записать адреса строк в этот массив (ну и еще строки нужным образом заполнить). Выделить память под строки можно как одним куском, так и отдельно под каждую. При большом желании можно даже выделить сразу память и под строки, и под массив, но от необходимости заполнить массив это вас не избавит.
-- 28.10.2021, 13:49 --А как вызвать free() правильно?
free можно вызывать только на указатели, которые вернула
malloc (на самом деле не совсем, но это достаточно хорошее приближение). Но в любом случае это не поможет, потому что у вас не то создается что просили.