Soit la fonction se trouvant dans une librairie dynamique
void f()
{
static char chaine[10];
// code
}
Je voudrais savoir si la variable static chaine est mapée dans l'espace
mémoire des programmes qui utilisent cette fonction, ou bien si elle est
mappée dans l'espace mémoire de la lib.
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
kanze
"françois M." wrote in message news:<brbmf4$fsr$...
Soit la fonction se trouvant dans une librairie dynamique
void f() { static char chaine[10]; // code }
Je voudrais savoir si la variable static chaine est mapée dans l'espace mémoire des programmes qui utilisent cette fonction, ou bien si elle est mappée dans l'espace mémoire de la lib.
Je ne suis pas sûr de comprendre la question. Un lib n'a pas d'espace mémoire. Les espaces mémoire n'existent que lors de l'éxecution, et sont propre au processus. En supposant que j'ai bien compris ce que tu entends par « espace mémoire ».
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"françois M." <pas@depub.com> wrote in message
news:<brbmf4$fsr$1@biggoron.nerim.net>...
Soit la fonction se trouvant dans une librairie dynamique
void f()
{
static char chaine[10];
// code
}
Je voudrais savoir si la variable static chaine est mapée dans
l'espace mémoire des programmes qui utilisent cette fonction, ou bien
si elle est mappée dans l'espace mémoire de la lib.
Je ne suis pas sûr de comprendre la question. Un lib n'a pas d'espace
mémoire. Les espaces mémoire n'existent que lors de l'éxecution, et sont
propre au processus. En supposant que j'ai bien compris ce que tu
entends par « espace mémoire ».
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
"françois M." wrote in message news:<brbmf4$fsr$...
Soit la fonction se trouvant dans une librairie dynamique
void f() { static char chaine[10]; // code }
Je voudrais savoir si la variable static chaine est mapée dans l'espace mémoire des programmes qui utilisent cette fonction, ou bien si elle est mappée dans l'espace mémoire de la lib.
Je ne suis pas sûr de comprendre la question. Un lib n'a pas d'espace mémoire. Les espaces mémoire n'existent que lors de l'éxecution, et sont propre au processus. En supposant que j'ai bien compris ce que tu entends par « espace mémoire ».
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
françois M.
a écrit dans le message de news:
"françois M." wrote in message news:<brbmf4$fsr$...
Soit la fonction se trouvant dans une librairie dynamique
void f() { static char chaine[10]; // code }
Je voudrais savoir si la variable static chaine est mapée dans l'espace mémoire des programmes qui utilisent cette fonction, ou bien si elle est mappée dans l'espace mémoire de la lib.
Je ne suis pas sûr de comprendre la question. Un lib n'a pas d'espace mémoire. Les espaces mémoire n'existent que lors de l'éxecution, et sont propre au processus. En supposant que j'ai bien compris ce que tu entends par « espace mémoire ».
Admettons que j'ai deux programmes A et B qui utilisent cette fonction f() qui se trouve elle dans une librairie dynamique. Au lancement des deux process A et B, chacun a son propre espace mémoire ainsi qu'une zone 'bss' distincte l'une de l'autre. Est-ce que chaque process A et B aura chacun une variable 'chaine' dans son 'bss' ou bien la variable 'chaine' sera partagée entre tous les process qui appellent cette fonction. En gros, je voudrais savoir comment sont gérées les variables globales qui se trouvent dans des librairies dynamiques. Sont-elles communes ou bien le linker en crée-t-il une pour chaque exécutable au moment de la compilation ?
Merci.
<kanze@gabi-soft.fr> a écrit dans le message de
news:d6652001.0312120413.37801206@posting.google.com...
"françois M." <pas@depub.com> wrote in message
news:<brbmf4$fsr$1@biggoron.nerim.net>...
Soit la fonction se trouvant dans une librairie dynamique
void f()
{
static char chaine[10];
// code
}
Je voudrais savoir si la variable static chaine est mapée dans
l'espace mémoire des programmes qui utilisent cette fonction, ou bien
si elle est mappée dans l'espace mémoire de la lib.
Je ne suis pas sûr de comprendre la question. Un lib n'a pas d'espace
mémoire. Les espaces mémoire n'existent que lors de l'éxecution, et sont
propre au processus. En supposant que j'ai bien compris ce que tu
entends par « espace mémoire ».
Admettons que j'ai deux programmes A et B qui utilisent cette fonction f()
qui se trouve elle dans une librairie dynamique. Au lancement des deux
process A et B, chacun a son propre espace mémoire ainsi qu'une zone 'bss'
distincte l'une de l'autre.
Est-ce que chaque process A et B aura chacun une variable 'chaine' dans son
'bss' ou bien la variable 'chaine' sera partagée entre tous les process qui
appellent cette fonction. En gros, je voudrais savoir comment sont gérées
les variables globales qui se trouvent dans des librairies dynamiques.
Sont-elles communes ou bien le linker en crée-t-il une pour chaque
exécutable au moment de la compilation ?
"françois M." wrote in message news:<brbmf4$fsr$...
Soit la fonction se trouvant dans une librairie dynamique
void f() { static char chaine[10]; // code }
Je voudrais savoir si la variable static chaine est mapée dans l'espace mémoire des programmes qui utilisent cette fonction, ou bien si elle est mappée dans l'espace mémoire de la lib.
Je ne suis pas sûr de comprendre la question. Un lib n'a pas d'espace mémoire. Les espaces mémoire n'existent que lors de l'éxecution, et sont propre au processus. En supposant que j'ai bien compris ce que tu entends par « espace mémoire ».
Admettons que j'ai deux programmes A et B qui utilisent cette fonction f() qui se trouve elle dans une librairie dynamique. Au lancement des deux process A et B, chacun a son propre espace mémoire ainsi qu'une zone 'bss' distincte l'une de l'autre. Est-ce que chaque process A et B aura chacun une variable 'chaine' dans son 'bss' ou bien la variable 'chaine' sera partagée entre tous les process qui appellent cette fonction. En gros, je voudrais savoir comment sont gérées les variables globales qui se trouvent dans des librairies dynamiques. Sont-elles communes ou bien le linker en crée-t-il une pour chaque exécutable au moment de la compilation ?
Merci.
Raphael Tosto
Les deux applis A et B auront chacune une copie distincte da la variable 'chaine'.
Sauf si tu utilise un Windows 16 bits ( les DLLs étant chargé dans l'espace systeme), il y a une seule variable 'chaine' partagée par toutes les instances
"françois M." a écrit dans le message de news:brbmf4$fsr$
Bonjour,
Soit la fonction se trouvant dans une librairie dynamique
void f() { static char chaine[10]; // code }
Je voudrais savoir si la variable static chaine est mapée dans l'espace mémoire des programmes qui utilisent cette fonction, ou bien si elle est mappée dans l'espace mémoire de la lib. Merci.
Les deux applis A et B auront chacune une copie distincte da la variable
'chaine'.
Sauf si tu utilise un Windows 16 bits ( les DLLs étant chargé dans l'espace
systeme), il y a une seule variable 'chaine' partagée par toutes les
instances
"françois M." <pas@depub.com> a écrit dans le message de
news:brbmf4$fsr$1@biggoron.nerim.net...
Bonjour,
Soit la fonction se trouvant dans une librairie dynamique
void f()
{
static char chaine[10];
// code
}
Je voudrais savoir si la variable static chaine est mapée dans l'espace
mémoire des programmes qui utilisent cette fonction, ou bien si elle est
mappée dans l'espace mémoire de la lib.
Merci.
Les deux applis A et B auront chacune une copie distincte da la variable 'chaine'.
Sauf si tu utilise un Windows 16 bits ( les DLLs étant chargé dans l'espace systeme), il y a une seule variable 'chaine' partagée par toutes les instances
"françois M." a écrit dans le message de news:brbmf4$fsr$
Bonjour,
Soit la fonction se trouvant dans une librairie dynamique
void f() { static char chaine[10]; // code }
Je voudrais savoir si la variable static chaine est mapée dans l'espace mémoire des programmes qui utilisent cette fonction, ou bien si elle est mappée dans l'espace mémoire de la lib. Merci.
James Kanze
"françois M." writes:
|> a écrit dans le message de |> news: |> > "françois M." wrote in message |> > news:<brbmf4$fsr$...
|> > > Soit la fonction se trouvant dans une librairie dynamique
|> > > Je voudrais savoir si la variable static chaine est mapée |> > > dans l'espace mémoire des programmes qui utilisent cette |> > > fonction, ou bien si elle est mappée dans l'espace mémoire |> > > de la lib.
|> > Je ne suis pas sûr de comprendre la question. Un lib n'a pas |> > d'espace mémoire. Les espaces mémoire n'existent que lors de |> > l'éxecution, et sont propre au processus. En supposant que j'ai |> > bien compris ce que tu entends par « espace mémoire ».
|> Admettons que j'ai deux programmes A et B qui utilisent cette |> fonction f() qui se trouve elle dans une librairie dynamique. Au |> lancement des deux process A et B, chacun a son propre espace |> mémoire ainsi qu'une zone 'bss' distincte l'une de l'autre.
|> Est-ce que chaque process A et B aura chacun une variable 'chaine' |> dans son 'bss' ou bien la variable 'chaine' sera partagée entre |> tous les process qui appellent cette fonction.
Formellement, ça dépend du système, mais dans tous les systèmes que je connais, les processus ont chaqu'un leur propre espace d'adressage (au moins de démander explicitement de la mémoire partagée). En général aussi, le segment de texte (le code) se mappe au ficher d'origine, mais toute la reste a aussi ces propre segments de swap pour la pagination.
|> En gros, je voudrais savoir comment sont gérées les variables |> globales qui se trouvent dans des librairies dynamiques. Sont-elles |> communes ou bien le linker en crée-t-il une pour chaque |> exécutable au moment de la compilation ?
Au moment du chargement dynamique, le chargeur s'occupe de trouver la mémoire (virtuelle) nécessaire pour que chaque processus ait l'impression d'avoir sa propre copie de tout.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
"françois M." <pas@depub.com> writes:
|> <kanze@gabi-soft.fr> a écrit dans le message de
|> news:d6652001.0312120413.37801206@posting.google.com...
|> > "françois M." <pas@depub.com> wrote in message
|> > news:<brbmf4$fsr$1@biggoron.nerim.net>...
|> > > Soit la fonction se trouvant dans une librairie dynamique
|> > > Je voudrais savoir si la variable static chaine est mapée
|> > > dans l'espace mémoire des programmes qui utilisent cette
|> > > fonction, ou bien si elle est mappée dans l'espace mémoire
|> > > de la lib.
|> > Je ne suis pas sûr de comprendre la question. Un lib n'a pas
|> > d'espace mémoire. Les espaces mémoire n'existent que lors de
|> > l'éxecution, et sont propre au processus. En supposant que j'ai
|> > bien compris ce que tu entends par « espace mémoire ».
|> Admettons que j'ai deux programmes A et B qui utilisent cette
|> fonction f() qui se trouve elle dans une librairie dynamique. Au
|> lancement des deux process A et B, chacun a son propre espace
|> mémoire ainsi qu'une zone 'bss' distincte l'une de l'autre.
|> Est-ce que chaque process A et B aura chacun une variable 'chaine'
|> dans son 'bss' ou bien la variable 'chaine' sera partagée entre
|> tous les process qui appellent cette fonction.
Formellement, ça dépend du système, mais dans tous les
systèmes que je connais, les processus ont chaqu'un leur propre
espace d'adressage (au moins de démander explicitement de la
mémoire partagée). En général aussi, le segment de texte (le
code) se mappe au ficher d'origine, mais toute la reste a aussi ces
propre segments de swap pour la pagination.
|> En gros, je voudrais savoir comment sont gérées les variables
|> globales qui se trouvent dans des librairies dynamiques. Sont-elles
|> communes ou bien le linker en crée-t-il une pour chaque
|> exécutable au moment de la compilation ?
Au moment du chargement dynamique, le chargeur s'occupe de trouver la
mémoire (virtuelle) nécessaire pour que chaque processus ait
l'impression d'avoir sa propre copie de tout.
--
James Kanze mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
|> > > Je voudrais savoir si la variable static chaine est mapée |> > > dans l'espace mémoire des programmes qui utilisent cette |> > > fonction, ou bien si elle est mappée dans l'espace mémoire |> > > de la lib.
|> > Je ne suis pas sûr de comprendre la question. Un lib n'a pas |> > d'espace mémoire. Les espaces mémoire n'existent que lors de |> > l'éxecution, et sont propre au processus. En supposant que j'ai |> > bien compris ce que tu entends par « espace mémoire ».
|> Admettons que j'ai deux programmes A et B qui utilisent cette |> fonction f() qui se trouve elle dans une librairie dynamique. Au |> lancement des deux process A et B, chacun a son propre espace |> mémoire ainsi qu'une zone 'bss' distincte l'une de l'autre.
|> Est-ce que chaque process A et B aura chacun une variable 'chaine' |> dans son 'bss' ou bien la variable 'chaine' sera partagée entre |> tous les process qui appellent cette fonction.
Formellement, ça dépend du système, mais dans tous les systèmes que je connais, les processus ont chaqu'un leur propre espace d'adressage (au moins de démander explicitement de la mémoire partagée). En général aussi, le segment de texte (le code) se mappe au ficher d'origine, mais toute la reste a aussi ces propre segments de swap pour la pagination.
|> En gros, je voudrais savoir comment sont gérées les variables |> globales qui se trouvent dans des librairies dynamiques. Sont-elles |> communes ou bien le linker en crée-t-il une pour chaque |> exécutable au moment de la compilation ?
Au moment du chargement dynamique, le chargeur s'occupe de trouver la mémoire (virtuelle) nécessaire pour que chaque processus ait l'impression d'avoir sa propre copie de tout.
-- James Kanze mailto: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93