devEngineer, почитайте литературу об операциях со строками в си. И да, как вам уже выше написали, вы пытаетесь освободить память, не выделенную в куче (т. е. через malloc) через функцию free - отсюда и падение приложения.
Да там все плохо. Переменная string на null не проверяется, переменная size на отрицательное значение, результат malloc тоже хорошо бы проверть на null.