Pregunta

Debería prefacio esto diciendo que estoy trabajando en una aplicación de PC de bolsillo y los archivos de datos viven en tarjetas SD.

Tengo una aplicación que tiene que crear una matriz de tamaño x. malloc falla cada vez.

Tengo un archivo de 1 concierto en una tarjeta de 4 conciertos.
Tengo 64 megas de memoria integrada (ram / data / application / os)
No puedo procesar los datos porque la matriz que necesito es demasiado grande.
Acceder a una tarjeta SD es casi tan rápido como el ram.
Estoy trabajando en C ++ (mfc)

¿Cuál es la mejor manera de acceder al archivo que voy a usar como matriz?
¿O habría una forma diferente de hacer esto?

¿Fue útil?

Solución

Debe crear un archivo lo suficientemente grande para la matriz, debidamente acolchado (de acuerdo con GetSystemInfo), y asignar el archivo con CreateFileMapping / MapViewOfFile.

Al menos, ese sería mi primer intento; puede haber restricciones sobre el tamaño que puede tener un archivo mapeado en CE.

Otros consejos

Necesitaría crear una ventana de n registros (que cabe en la memoria) y mover esa ventana para mantener los registros en los que está trabajando. No soy lo suficientemente fluido en mfc como para darle una muestra de código, pero no sería tan difícil.

En c # escribiría un IEnumerable personalizado < T >

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top