2008-11-01 11 views
1

Je devrais commencer par dire que je travaille sur une application PC de poche et que les fichiers de données sont stockés sur des cartes SD.Utilisation du système de fichiers pour augmenter le nombre de ram

J'ai une application qui doit créer un tableau de taille x. malloc échoue à chaque fois.

J'ai un fichier de 1 gig sur une carte de 4 gig.
J'ai 64 megs de mémoire embarquée (ram/data/application/os)
Je ne peux pas traiter les données parce que le tableau dont j'ai besoin est trop grand.
Accéder à une carte SD est presque aussi rapide que ram.
Je travaille en C++ (mfc)

quelle est la meilleure façon d'accéder au fichier que je vais utiliser en tant que tableau?
Ou y aurait-il une façon différente de le faire?

Répondre

2

Vous devez créer un fichier assez grand pour la matrice, convenablement rembourré (selon GetSystemInfo), et mapper le fichier avec CreateFileMapping/MapViewOfFile. Au moins, ce serait mon premier essai - il pourrait y avoir des restrictions sur la taille d'un fichier mappé sur CE.

0

Vous auriez besoin de créer une fenêtre de n enregistrements (qui ira dans la mémoire) et de déplacer cette fenêtre afin de conserver les enregistrements dans lesquels vous travaillez. Je ne parle pas assez couramment mfc pour vous donner un échantillon de code, mais ce ne serait pas si difficile.

En C# j'écrirais un IEnumerable personnalisé < T