Allocation memoire en C [Fermé]

Signaler
-
TuXor
Messages postés
124
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
12 mai 2006
-
Bonjour,
je sais que en langage C la gestion de mémoire est primordiale, surtout au niveau des pointeurs.
Par contre je trouve sopuvent dans des programmes des ligne de code comme celle-ci:

char *tableau="chaine de caracteres";


Or si je ne m'abuse ce code est cohérent malgrès le fait que on a pas réservé la mémoire.

Un grand merci à celui qui pourrait m'éclairçir la situation.

4 réponses


salut!
ca ca veut dire que ableau est un pointeur de char(chaine de caractere) qui contient la valeur "chaine de caractere"!
Messages postés
1072
Date d'inscription
dimanche 11 février 2001
Statut
Membre
Dernière intervention
29 janvier 2006
206
C'est le compilateur qui réserve l'espace nécessaire au stockage de la chaîne ET en fournit l'adresse.
Merci c'est cool
Messages postés
124
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
12 mai 2006
25
Salut,

j'ai "subi" quelque cours a ce sujet, et voila ce qui m'en reste :

En fait le C offre deux niveaux de gestion mémoire, d'un coté le compilateur gère automatiquement un espace mémoire(je crois que c'est la "pile") qui est alloué a l'exécution de ton programme (c'est pour cela par exemple qu'on spécifie la taille des tableaux et que l'on définit les différants type des variables ) pour utilier juste la place nécessaire.

Il existe également un autre espace de mémoire (le "tas" me semble-t-il) qui est lui géré par le programmeur, c'est la qu'intervient la manipulation de pointeurs dynamique. (malloc, sizeof etc...)
le programmeur demande un espace mémoire qui va lui étre accordé, et qui va étre accessible par un pointeur qui est en fait une adresse mémoire.

j'espère que ces quelques explication sont compréhenibles et qu'elle auront été utiles (c'est de tête il peut y avoir des erreurs)
@+