Нет ничего плохого в показанном вами коде (который я вижу).
Первый шаг, который вы должны сделать, это запустить вашу программу под Valgrind и исправить все ошибки, о которых она сообщает.
Если Valgrind сообщает об ошибках, которые вы не понимаете, обновите ваш вопрос выводом Valgrind.
Если Valgrind ничего не сообщает, запустите вашу программу под GDB, напечатайте значения i
, current
, size[current]
и т. Д. И обновите свой вопрос в сеансе GDB.