GNT sans publicité, site mobile, fonctionnalitées exclusives...

chaine littérale : peut-on libérer son espace mémoire ?

Le
(°-°)
Bonjour,

Lorsque dans un pgm je défini des chaines littérales
comme ceci :

#include <stdlib.h>

int main(void) {

const char *pChaine_1 = "La chaine numero 1";
const char *pChaine_2 = "La chaine numero 2";
const char *pChaine_3 = "La chaine numero 3";

return EXIT_SUCCESS;
}

c'est l'implémentation qui va réserver les zones
mémoires pour y ranger ces chaines, mais en cours de programme
je n'ai pas la possibilité de libérer l'espace mémoire occupé par,
par exemple, pChaine_1 ??
Cela ne se fera qu'à la fin du pgm ?
C'est l'OS qui libérera cette espace mémoire ?
Merci d'avance
Lire les 3 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DINH Viêt Hoà
Le #477336

Lorsque dans un pgm je défini des chaines littérales


"écrire 'pgm' au lieu de 'programme', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed

comme ceci :

#include
int main(void) {

const char *pChaine_1 = "La chaine numero 1";
const char *pChaine_2 = "La chaine numero 2";
const char *pChaine_3 = "La chaine numero 3";

return EXIT_SUCCESS;
}

Cela ne se fera qu'à la fin du pgm ?
C'est l'OS qui libérera cette espace mémoire ?


En fait, dans la plupart des implémentations, les chaînes sont stockées
dans un espace mémoire qui va rester le même du début à la fin du
programme et cet espace sera libéré en même temps que le programme
terminera.

Dans quel but voudrais-tu pouvoir les libérer ?

--
DINH V. Hoa,

"T'aurais pas une question sur le langage C" -- Emmanuel Delahaye

(°-°)
Le #477145

"écrire 'pgm' au lieu de 'programme', c'est pas un problème d'orthographe,
c'est un problème de capillarité palmaire" -- ed


C'est pour économiser les touches de mon clavier...

Dans quel but voudrais-tu pouvoir les libérer ?


C'était juste pour savoir si c'était possible ou non de libérer cet espace.

Emmanuel Delahaye
Le #477141
In 'fr.comp.lang.c', "(°-°)" <adresseInvalide> wrote:

Lorsque dans un pgm je défini des chaines littérales
comme ceci :

#include
int main(void) {

const char *pChaine_1 = "La chaine numero 1";
const char *pChaine_2 = "La chaine numero 2";
const char *pChaine_3 = "La chaine numero 3";

return EXIT_SUCCESS;
}

c'est l'implémentation qui va réserver les zones
mémoires pour y ranger ces chaines, mais en cours de programme


Oui. La durée de vie est permanete et non modifable.

je n'ai pas la possibilité de libérer l'espace mémoire occupé par,
par exemple, pChaine_1 ??


Non. On ne peut libérer que ce qui a été alloué par malloc().

Cela ne se fera qu'à la fin du pgm ?


Oui, après le return de main().

C'est l'OS qui libérera cette espace mémoire ?


Peut importe qui, c'est pris en charge 'à l'extérieur'

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/r...px?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Publicité
Suivre les réponses
Poster une réponse
Anonyme