Allocation memoire en C

Sabre -  
TuXor Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   -
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

Utilisateur anonyme
 
salut!
ca ca veut dire que ableau est un pointeur de char(chaine de caractere) qui contient la valeur "chaine de caractere"!
0
Marden Messages postés 1072 Date d'inscription   Statut Membre Dernière intervention   210
 
C'est le compilateur qui réserve l'espace nécessaire au stockage de la chaîne ET en fournit l'adresse.
0
Sabre
 
Merci c'est cool
0
TuXor Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   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)
@+
0