Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

3 réponses
Avatar
(°-°)
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

3 réponses

Avatar
DINH Viêt Hoà

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 <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;
}

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

Avatar
(°-°)

"é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.

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

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


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/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/