У вас во втором примере XFree(image); вызывается в цикле, а image = XGetImage(...) вызывается только один раз перед циклом, в отличии от первого примера. Вот и происходит "double free".
Ответ написан
Комментировать
Комментировать
Оценили как «Нравится»
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.