Allocation memoire en C

Fermé
Sabre - 1 juin 2005 à 13:43
TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006 - 1 juin 2005 à 14:41
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.
A voir également:

4 réponses

Utilisateur anonyme
1 juin 2005 à 14:08
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 dimanche 11 février 2001 Statut Membre Dernière intervention 29 janvier 2006 210
1 juin 2005 à 14:30
C'est le compilateur qui réserve l'espace nécessaire au stockage de la chaîne ET en fournit l'adresse.
0
Merci c'est cool
0
TuXor Messages postés 97 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 28 avril 2006 25
1 juin 2005 à 14:41
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