Mikhail писал(а):Дож писал(а):Хоть тут нет технических утечек, на практике это имеет такие же неприятные последствия, т.е. внезапное OutOfMemory, которого вроде бы быть не должно
Это ошибка в плохо спроектированном программном модуле.
Этого мы не узнаем, пока не спросим написавшего модуль (или не прочтём документацию на модуль). Возможно, что он просто забыл об освобождении.
Опять же, например, если алгоритм предполагает сначала загрузку в память всех данных, а потом их полную обработку, а данных слишком много и получишь OutOfMemory это что утечка?
Это не утечка, потому что программист ожидает и осознаёт, что он грузит в память большой участок данных. Он не «забыл что-то освободить». Между утечками и загрузкой большого блока в память, повторюсь, огромная и принципиальная разница, гораздо бо́льшая, чем между технической утечкой указателя и логической утечкой в Java.
Если временные данные не влезли в ОЗУ это утечка?
Это очень сильно зависит от характера использования временных данных, может быть и так, и так. Если в каком-то алгоритме есть условные моменты «захвата памяти под временные данные» и «освобождения этой памяти» (после которой, согласно алгоритму, эта память не нужна), но в реальной программе, реализующей этот алгоритм, выходит так, что память под временные данные систематически не освобождается и не освободится, то это почти наверняка утечка, а не «программист так и задумывал».