¿Cómo evitar quedarse sin memoria en la aplicación de uso de memoria alta? C / C ++

He escrito un convertidor que toma archivos xml de openstreetmap y los convierte a un formato de representación de tiempo de ejecución binario que suele ser aproximadamente el 10% del tamaño original. Los tamaños de los archivos de entrada son generalmente de 3 gb y mayores. Los archivos de entrada no se cargan en la memoria de una vez, sino que se transmiten a medida que se recopilan puntos y polys, luego se ejecuta un bsp en ellos y se genera el archivo. Recientemente en archivos más grandes se queda sin memoria y muere (el que tiene 14 millones de puntos y 1 millón de polígonos). Por lo general, mi programa usa aproximadamente 1 gb a 1.2 gb de ram cuando esto sucede. Intenté aumentar la memoria virtual de 2 a 8 gb (en XP) pero este cambio no tuvo ningún efecto. Además, dado que este código es de código abierto, me gustaría que funcionara independientemente de la memoria RAM disponible (aunque más lenta), se ejecuta en Windows, Linux y Mac.

¿Qué técnicas puedo usar para evitar que se quede sin memoria? ¿Procesando los datos en subconjuntos más pequeños y luego fusionando los resultados finales? ¿Utilizo mi propio tipo de controlador de memoria virtual? ¿Alguna otra idea?

Respuestas a la pregunta(15)

Su respuesta a la pregunta