Buffer pour editeur de texte

Résolu
Signaler
Messages postés
123
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
18 juin 2012
-
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
hello all,
je voudrai créer un editeur de texte, et pour cela j'ai besoin d'un buffer(une variable char) qui contiendra toute la taille du fichier(qui peut etre de tres tres grande taille.
la est le problem une variable char a une taille limiter et moi je veut une taille a linfini.
Je c'est que vous aller me dire d'aller voir les sources("editeur de texte") de cs mais il utilise toute des fonctions toute prète de windows ect... et moi se qui minterese c'est de créer toute mais fonction moi meme.
merci et a bientot.

6 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Il y a deux type de mémoire, la pile et le tas.
Tes variables sont stockées dans la pile quand tu fais : int i; ou char name[256]; la pile est très rapide d'accès mais de taille limité (ton cache 4MO ou +).

Par contre, quand tu alloues dans le tas,  (ram), ton accès est un peu moins rapide mais tu as plus de place.
tu fais en C++:
char * Name=new char[10 000];
Quand tu alloues de la mémoire dans le tas, la gestion de la mémoire est de ton ressort. Tu ne dois JAMAIS oublier de deallouer la mémoire en faisant un delete (en c++) 
En C, regarde les fonctions malloc et free.

Si ta ram fais 2 Giga, tu ne pourras pas allouer 2 giga mais ce qu'il te reste de libre...
A+

____________________________________________________________________________
Mon site internet :  
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
La pile et le tas sont 2 espaces mémoires complètement séparé. Le tas correspond à la ram (2giga) et la pile correspond à la mémoire cache (celle qui se trouve à coté du microprocesseur 4MO: c'est pourquoi elle est plus rapide)
Avec un malloc on fait:
int *NB=(int*)malloc(NB_INT_QUE_TU_VEUX * sizeof(int));
A+

____________________________________________________________________________
Mon site internet :  
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
7
Salut
Si tu connais le principe de l'allocation dynamique, tu pourras créer un buffer de la taille que tu souhaites (dans les limites de ta ram) Tu auras donc besoin d'un char*
A+

____________________________________________________________________________
Mon site internet :  
Messages postés
123
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
18 juin 2012

merci pour la reponce,
non je ne connai pas le principe l'allocation dynamique, mais si j'ai bien compri avec sa je peut créer un buffer qui aura la taille de ma memoir ram.


par exempli si ma ram fai 2giga, le buffer fait 2giga : char buffer[taille_ram];


pourais tu me donner plus d'explication s'il te plai.


++
Messages postés
123
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
18 juin 2012

tres gentil de ta part copain pour cette brillante explication.++
Messages postés
123
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
18 juin 2012

mais j'ai quand meme un petit point a éclairesire :


tu me dit qu'il y a 2 type de memoir(pile et tas), est ce que cela veut dire que ma memoir de 2giga se divise en 2 :


-4MO pour la pile


-2giga - 4MO pour le tas

et si je fai pas un malloc je peut acceder que a la pile.
si c'est bien sa, peus tu me montrer un peti exemple de la fonction malloc pour créer un buffer de tres grande taille.
++