dyroj
Messages postés123Date d'inscriptionvendredi 14 novembre 2008StatutMembreDernière intervention18 juin 2012
-
16 févr. 2009 à 22:29
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 2013
-
18 févr. 2009 à 13:56
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.
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 18 févr. 2009 à 08:55
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 :
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 18 févr. 2009 à 13:56
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 :
Pistol_Pete
Messages postés1054Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 17 févr. 2009 à 08:20
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 :
dyroj
Messages postés123Date d'inscriptionvendredi 14 novembre 2008StatutMembreDernière intervention18 juin 2012 17 févr. 2009 à 16:45
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.
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
dyroj
Messages postés123Date d'inscriptionvendredi 14 novembre 2008StatutMembreDernière intervention18 juin 2012 18 févr. 2009 à 13:08
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.
++