[C / WIN32] LIRE UN FICHIER LIGNE PAR LIGNE

Signaler
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Messages postés
101
Date d'inscription
samedi 9 février 2002
Statut
Membre
Dernière intervention
5 mai 2009
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44453-c-win32-lire-un-fichier-ligne-par-ligne

Messages postés
101
Date d'inscription
samedi 9 février 2002
Statut
Membre
Dernière intervention
5 mai 2009

A possible benefit of memory-mapped files is a "lazy loading", thus using small amounts of RAM even for a very large file. Trying to load the entire contents of a file that is significantly larger than the amount of memory available can cause severe thrashing as the operating system reads from disk into memory and simultaneously pages from memory back to disk. Not only memory-mapping may bypass the page file completely, but the system only needs to load the smaller page-sized sections as data is being edited, similarly to demand paging scheme used for programs.
http://en.wikipedia.org/wiki/Memory-mapped_file

En gros, ça veut dire que quand tu veux faire une édition dans une partie de ton fichier mappé, l'OS va charger en mémoire un bout du fichier (1k,4k ? taille des pages ?). Si tu fais une écriture, il va ensuite la répercuter sur le fichier. Mais en aucun cas il y a une correspondance directe entre mémoire utilisée par le programme et la taille du fichier. (Encore que pour un petit fichier, genre 80Mo, ya tout de même des chances qu'il soit entierement en mémoire!)
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
J'ai pas trouver beaucoup d'exemples sur le File Mapping, ca a l'air de marcher mais si je charge un fichier de 80mo ca prend tjrs 80mo en memoire...

Neo_Fr
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
Utilise le FileMapping comme dit plus haut, en balladant un pointeur dedans c'est le systeme qui assurera le chargement par taille de page mémoire à ta place.
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
Je me suis contenter de controler les retours de fonctions..
Pour la lecture du fichier bloc par bloc sa devener trop compliquer et trop risquer..
Si ta d'autre conseilles hesite pas..

Neo_Fr
Afficher les 7 commentaires