Даже если у вас достаточно свободного системного ОЗУ, все равно может не хватить адресного пространства; вы обычно получаете только 2 ГБ для работы в 32-битном приложении. Хотя с таким крошечным изображением должно потребоваться более 1000 раз, чтобы использовать столько памяти. Делаете ли вы что-нибудь еще в своем цикле, жаждущем памяти?
Самое главное, есть ли причина, по которой вы хотите повторно загрузить файл изображения 10 000 раз? Если вы ищете несколько копий изображения для манипуляции, я бы рекомендовал делать копии исходной поверхности с SDL_ConvertSurface вместо того, чтобы каждый раз возвращаться к файлу. Если и этот метод не работает, возможно, что SDL_GetError выдаст вам более значимое сообщение об ошибке, когда это произойдет.
Если вы также записываете данные обратно в этот файл, убедитесь, что вы правильно его закрываете, иначе у вас могут возникнуть проблемы с разрешениями. Я уверен, что Windows не позволит вам открыть файл для чтения, который уже открыт для записи. (Это кажется менее вероятным, поскольку вы сталкиваетесь с проблемой только после тысячи итераций цикла, но это стоит проверить.)