j'aimerais savoir à quoi ils correspondent au niveau materiel ou os.
j'aimerais savoir à quoi ils correspondent au niveau materiel ou os.
j'aimerais savoir à quoi ils correspondent au niveau materiel ou os.
boujour,
je suis en train de maintéréssé la memoire et son utilisation en
programmation.
en c++ on defini plusieurs types de memoires (d'apres "c++:programmation
sous unix, windows et dos" de jesse Liberty & J. Mark Hord):
l'espace global de nom
l'espace memoire disponible ( ou tas)
les registres
l'espace de code
et la pile.
j'aimerais savoir à quoi ils correspondent au niveau materiel ou os.
pour les registres ... pas de problemes c'est au niveau processeur.
pour l'espace de code ... c'est la ou est le code du programme, sous win32,
entre 4Mo et 2Go ds le code programme.
pour les espaces de noms ...c'est la pile.(mais ou le compilateur difinie la
pile, et qui la gere?).
pour le tas ( alloué avec new), ou le compilateur défini le tas, et y a t il
un lien avec la mémoire paginé ?
si quelqu'un peux m'eclairer ?
boujour,
je suis en train de maintéréssé la memoire et son utilisation en
programmation.
en c++ on defini plusieurs types de memoires (d'apres "c++:programmation
sous unix, windows et dos" de jesse Liberty & J. Mark Hord):
l'espace global de nom
l'espace memoire disponible ( ou tas)
les registres
l'espace de code
et la pile.
j'aimerais savoir à quoi ils correspondent au niveau materiel ou os.
pour les registres ... pas de problemes c'est au niveau processeur.
pour l'espace de code ... c'est la ou est le code du programme, sous win32,
entre 4Mo et 2Go ds le code programme.
pour les espaces de noms ...c'est la pile.(mais ou le compilateur difinie la
pile, et qui la gere?).
pour le tas ( alloué avec new), ou le compilateur défini le tas, et y a t il
un lien avec la mémoire paginé ?
si quelqu'un peux m'eclairer ?
boujour,
je suis en train de maintéréssé la memoire et son utilisation en
programmation.
en c++ on defini plusieurs types de memoires (d'apres "c++:programmation
sous unix, windows et dos" de jesse Liberty & J. Mark Hord):
l'espace global de nom
l'espace memoire disponible ( ou tas)
les registres
l'espace de code
et la pile.
j'aimerais savoir à quoi ils correspondent au niveau materiel ou os.
pour les registres ... pas de problemes c'est au niveau processeur.
pour l'espace de code ... c'est la ou est le code du programme, sous win32,
entre 4Mo et 2Go ds le code programme.
pour les espaces de noms ...c'est la pile.(mais ou le compilateur difinie la
pile, et qui la gere?).
pour le tas ( alloué avec new), ou le compilateur défini le tas, et y a t il
un lien avec la mémoire paginé ?
si quelqu'un peux m'eclairer ?
Les compilateurs placent le tas où ils veulent, ils gèrent la pile
comme ils veulent, pour peu qu'ils respectent la sémantique du langage,
bref, quand on utilise un langage de haut niveau ce n'est pas pour se
préoccuper de ces choses bassement matérielles.
La seule chose qui compte pour le programmeur, c'est ce qui est
dit dans la norme du langage, pas ce que font les différents OS
et les différents compilateurs sur différentes machines..... qui
doivent respecter la norme.
Par exemple, un compilateur C++ peut très bien, pour une variable
auto dépassant une certaine taille mémoire, mettre seulement un pointeur
dans la pile afin de ne pas "l'encombrer" et allouer la variable
"ailleurs".
Évidemment, le compilateur "s'arrangera" pour que l'utilisateur ait
"l'impression" que la variable est dans la pile. Elle sera effectivement
comme une variable "auto". Il y aura cependant une indirection
pour l'adresser dans l'assembleur généré.
De même les variables "static" sont en général regroupées (en distinguant
cependant les variables "extern").
Elles sont allouées par le linker.
Jacti (qui a fait des compilateurs)
respect ! faire des compilos cela me semble très pointu..
Les compilateurs placent le tas où ils veulent, ils gèrent la pile
comme ils veulent, pour peu qu'ils respectent la sémantique du langage,
bref, quand on utilise un langage de haut niveau ce n'est pas pour se
préoccuper de ces choses bassement matérielles.
La seule chose qui compte pour le programmeur, c'est ce qui est
dit dans la norme du langage, pas ce que font les différents OS
et les différents compilateurs sur différentes machines..... qui
doivent respecter la norme.
Par exemple, un compilateur C++ peut très bien, pour une variable
auto dépassant une certaine taille mémoire, mettre seulement un pointeur
dans la pile afin de ne pas "l'encombrer" et allouer la variable
"ailleurs".
Évidemment, le compilateur "s'arrangera" pour que l'utilisateur ait
"l'impression" que la variable est dans la pile. Elle sera effectivement
comme une variable "auto". Il y aura cependant une indirection
pour l'adresser dans l'assembleur généré.
De même les variables "static" sont en général regroupées (en distinguant
cependant les variables "extern").
Elles sont allouées par le linker.
Jacti (qui a fait des compilateurs)
respect ! faire des compilos cela me semble très pointu..
Les compilateurs placent le tas où ils veulent, ils gèrent la pile
comme ils veulent, pour peu qu'ils respectent la sémantique du langage,
bref, quand on utilise un langage de haut niveau ce n'est pas pour se
préoccuper de ces choses bassement matérielles.
La seule chose qui compte pour le programmeur, c'est ce qui est
dit dans la norme du langage, pas ce que font les différents OS
et les différents compilateurs sur différentes machines..... qui
doivent respecter la norme.
Par exemple, un compilateur C++ peut très bien, pour une variable
auto dépassant une certaine taille mémoire, mettre seulement un pointeur
dans la pile afin de ne pas "l'encombrer" et allouer la variable
"ailleurs".
Évidemment, le compilateur "s'arrangera" pour que l'utilisateur ait
"l'impression" que la variable est dans la pile. Elle sera effectivement
comme une variable "auto". Il y aura cependant une indirection
pour l'adresser dans l'assembleur généré.
De même les variables "static" sont en général regroupées (en distinguant
cependant les variables "extern").
Elles sont allouées par le linker.
Jacti (qui a fait des compilateurs)
respect ! faire des compilos cela me semble très pointu..
"Jacti" a écrit dans le message de
news:Les compilateurs placent le tas où ils veulent, ils gèrent la pile
comme ils veulent, pour peu qu'ils respectent la sémantique du langage,
bref, quand on utilise un langage de haut niveau ce n'est pas pour se
préoccuper de ces choses bassement matérielles.
effectivement...mais un doute ma assaillis!! Concernant la capacité de mes
compilateurs à optimiser leur accès à la mémoire virtuelle. Cela est sans
doute dû au cours d'architecture des machines que j'ai suivi....comme quoi
avoir des réponses posent encore plus de nouvelles questions.
En fait les pages de mémoire sous x86 sont de 4Ko, et lors d'allocation, le
compilateur par intermédiaire de l'os va s'alloué des pages en fonction des
besoins et fractionner ses pages si les données sont < à 4ko.Et ainsi
remplir sa page avec des données de petites tailles.
La seule chose qui compte pour le programmeur, c'est ce qui est
dit dans la norme du langage, pas ce que font les différents OS
et les différents compilateurs sur différentes machines..... qui
doivent respecter la norme.
En effet. Cela dit puisque la norme confie la gestion de la pile au
compilateur, quel est intérêt d'utiliser la mémoire dynamique ( tas) ? Le
programmeur devrait pouvoir créer des données a volonté. Je ne pense pas que
le seul critère de choix de l'utilisation de new ( tas) soit la porté de ses
objets au delà de la fin de leur espace de nom.
Par exemple, un compilateur C++ peut très bien, pour une variable
auto dépassant une certaine taille mémoire, mettre seulement un pointeur
dans la pile afin de ne pas "l'encombrer" et allouer la variable
"ailleurs".Évidemment, le compilateur "s'arrangera" pour que l'utilisateur ait
"l'impression" que la variable est dans la pile. Elle sera effectivement
comme une variable "auto". Il y aura cependant une indirection
pour l'adresser dans l'assembleur généré.
je ne pensais pas cela possible !! Il me trompe! La différence entre le tas
et la pile sont donc plus conceptuelle que physique.
Une autre question me vient: Il y a t'il un lien direct entre la pile dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par le
registre SP ?
De même les variables "static" sont en général regroupées (en distinguant
cependant les variables "extern").
Elles sont allouées par le linker.
Jacti (qui a fait des compilateurs)
respect ! faire des compilos cela me semble très pointu..
"Jacti" <jacti@jacti-antispam.com> a écrit dans le message de
news:40FE3959.6C1C8FE4@jacti-antispam.com...
Les compilateurs placent le tas où ils veulent, ils gèrent la pile
comme ils veulent, pour peu qu'ils respectent la sémantique du langage,
bref, quand on utilise un langage de haut niveau ce n'est pas pour se
préoccuper de ces choses bassement matérielles.
effectivement...mais un doute ma assaillis!! Concernant la capacité de mes
compilateurs à optimiser leur accès à la mémoire virtuelle. Cela est sans
doute dû au cours d'architecture des machines que j'ai suivi....comme quoi
avoir des réponses posent encore plus de nouvelles questions.
En fait les pages de mémoire sous x86 sont de 4Ko, et lors d'allocation, le
compilateur par intermédiaire de l'os va s'alloué des pages en fonction des
besoins et fractionner ses pages si les données sont < à 4ko.Et ainsi
remplir sa page avec des données de petites tailles.
La seule chose qui compte pour le programmeur, c'est ce qui est
dit dans la norme du langage, pas ce que font les différents OS
et les différents compilateurs sur différentes machines..... qui
doivent respecter la norme.
En effet. Cela dit puisque la norme confie la gestion de la pile au
compilateur, quel est intérêt d'utiliser la mémoire dynamique ( tas) ? Le
programmeur devrait pouvoir créer des données a volonté. Je ne pense pas que
le seul critère de choix de l'utilisation de new ( tas) soit la porté de ses
objets au delà de la fin de leur espace de nom.
Par exemple, un compilateur C++ peut très bien, pour une variable
auto dépassant une certaine taille mémoire, mettre seulement un pointeur
dans la pile afin de ne pas "l'encombrer" et allouer la variable
"ailleurs".
Évidemment, le compilateur "s'arrangera" pour que l'utilisateur ait
"l'impression" que la variable est dans la pile. Elle sera effectivement
comme une variable "auto". Il y aura cependant une indirection
pour l'adresser dans l'assembleur généré.
je ne pensais pas cela possible !! Il me trompe! La différence entre le tas
et la pile sont donc plus conceptuelle que physique.
Une autre question me vient: Il y a t'il un lien direct entre la pile dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par le
registre SP ?
De même les variables "static" sont en général regroupées (en distinguant
cependant les variables "extern").
Elles sont allouées par le linker.
Jacti (qui a fait des compilateurs)
respect ! faire des compilos cela me semble très pointu..
"Jacti" a écrit dans le message de
news:Les compilateurs placent le tas où ils veulent, ils gèrent la pile
comme ils veulent, pour peu qu'ils respectent la sémantique du langage,
bref, quand on utilise un langage de haut niveau ce n'est pas pour se
préoccuper de ces choses bassement matérielles.
effectivement...mais un doute ma assaillis!! Concernant la capacité de mes
compilateurs à optimiser leur accès à la mémoire virtuelle. Cela est sans
doute dû au cours d'architecture des machines que j'ai suivi....comme quoi
avoir des réponses posent encore plus de nouvelles questions.
En fait les pages de mémoire sous x86 sont de 4Ko, et lors d'allocation, le
compilateur par intermédiaire de l'os va s'alloué des pages en fonction des
besoins et fractionner ses pages si les données sont < à 4ko.Et ainsi
remplir sa page avec des données de petites tailles.
La seule chose qui compte pour le programmeur, c'est ce qui est
dit dans la norme du langage, pas ce que font les différents OS
et les différents compilateurs sur différentes machines..... qui
doivent respecter la norme.
En effet. Cela dit puisque la norme confie la gestion de la pile au
compilateur, quel est intérêt d'utiliser la mémoire dynamique ( tas) ? Le
programmeur devrait pouvoir créer des données a volonté. Je ne pense pas que
le seul critère de choix de l'utilisation de new ( tas) soit la porté de ses
objets au delà de la fin de leur espace de nom.
Par exemple, un compilateur C++ peut très bien, pour une variable
auto dépassant une certaine taille mémoire, mettre seulement un pointeur
dans la pile afin de ne pas "l'encombrer" et allouer la variable
"ailleurs".Évidemment, le compilateur "s'arrangera" pour que l'utilisateur ait
"l'impression" que la variable est dans la pile. Elle sera effectivement
comme une variable "auto". Il y aura cependant une indirection
pour l'adresser dans l'assembleur généré.
je ne pensais pas cela possible !! Il me trompe! La différence entre le tas
et la pile sont donc plus conceptuelle que physique.
Une autre question me vient: Il y a t'il un lien direct entre la pile dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par le
registre SP ?
De même les variables "static" sont en général regroupées (en distinguant
cependant les variables "extern").
Elles sont allouées par le linker.
Jacti (qui a fait des compilateurs)
respect ! faire des compilos cela me semble très pointu..
Justement, c'est l'allocation dynamique (new) qui permet au programmeur
de créer des données à volonté à l'exécution du programme.
Par exemple, pour un système de fenêtrage, l'objet fenêtre va être alloué
dynamiquement car on ne sait pas, a priori, combien l'utilisateur va en
ouvrir.
Cependant, certains systèmes mettent des limites
Ta dernière phrase est ambigüe car elle semble mélanger le type
d'allocation
et la visibilité (scope en anglais), ce qui n'est pas du tout la même
chose.
Dit autrement, c'est de la sémantique. Peu importe comment
le compilateur gère les différents types d'allocation mémoire du moment
qu'il respecte la sémantique du langage à l'exécution.
Une autre question me vient: Il y a t'il un lien direct entre la pile
dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé
pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par
le
registre SP ?
C'est quoi push et pop ? des instruction assembleur du processeur machin,
des opérations du type abstrait "Pile", des ordres du langage intermédieur
issus
de la phase d'analyse sémantique, du P-Code "à la Pascal", des
instructions
d'une machine virtuelle "langage", etc. ??
C'est quoi le registre SP ? je soupçonne que ce soit Stack Pointer :-)
mais ça ne s'appelle pas comme ça dans tous les environnements...
Et puis il y a des machines qui n'ont pas de mécanisme "hardware" de
gestion de
pile.
Dans ce cas c'est le compilateur qui doit générer ce qu'il faut pour
simuler
une pile...
Et la je pensait effectivement au registre des Processeurs x86 famille 386
Justement, c'est l'allocation dynamique (new) qui permet au programmeur
de créer des données à volonté à l'exécution du programme.
Par exemple, pour un système de fenêtrage, l'objet fenêtre va être alloué
dynamiquement car on ne sait pas, a priori, combien l'utilisateur va en
ouvrir.
Cependant, certains systèmes mettent des limites
Ta dernière phrase est ambigüe car elle semble mélanger le type
d'allocation
et la visibilité (scope en anglais), ce qui n'est pas du tout la même
chose.
Dit autrement, c'est de la sémantique. Peu importe comment
le compilateur gère les différents types d'allocation mémoire du moment
qu'il respecte la sémantique du langage à l'exécution.
Une autre question me vient: Il y a t'il un lien direct entre la pile
dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé
pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par
le
registre SP ?
C'est quoi push et pop ? des instruction assembleur du processeur machin,
des opérations du type abstrait "Pile", des ordres du langage intermédieur
issus
de la phase d'analyse sémantique, du P-Code "à la Pascal", des
instructions
d'une machine virtuelle "langage", etc. ??
C'est quoi le registre SP ? je soupçonne que ce soit Stack Pointer :-)
mais ça ne s'appelle pas comme ça dans tous les environnements...
Et puis il y a des machines qui n'ont pas de mécanisme "hardware" de
gestion de
pile.
Dans ce cas c'est le compilateur qui doit générer ce qu'il faut pour
simuler
une pile...
Et la je pensait effectivement au registre des Processeurs x86 famille 386
Justement, c'est l'allocation dynamique (new) qui permet au programmeur
de créer des données à volonté à l'exécution du programme.
Par exemple, pour un système de fenêtrage, l'objet fenêtre va être alloué
dynamiquement car on ne sait pas, a priori, combien l'utilisateur va en
ouvrir.
Cependant, certains systèmes mettent des limites
Ta dernière phrase est ambigüe car elle semble mélanger le type
d'allocation
et la visibilité (scope en anglais), ce qui n'est pas du tout la même
chose.
Dit autrement, c'est de la sémantique. Peu importe comment
le compilateur gère les différents types d'allocation mémoire du moment
qu'il respecte la sémantique du langage à l'exécution.
Une autre question me vient: Il y a t'il un lien direct entre la pile
dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé
pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par
le
registre SP ?
C'est quoi push et pop ? des instruction assembleur du processeur machin,
des opérations du type abstrait "Pile", des ordres du langage intermédieur
issus
de la phase d'analyse sémantique, du P-Code "à la Pascal", des
instructions
d'une machine virtuelle "langage", etc. ??
C'est quoi le registre SP ? je soupçonne que ce soit Stack Pointer :-)
mais ça ne s'appelle pas comme ça dans tous les environnements...
Et puis il y a des machines qui n'ont pas de mécanisme "hardware" de
gestion de
pile.
Dans ce cas c'est le compilateur qui doit générer ce qu'il faut pour
simuler
une pile...
Et la je pensait effectivement au registre des Processeurs x86 famille 386
en c++ on defini plusieurs types de memoires (d'apres "c++:programmation
sous unix, windows et dos" de jesse Liberty & J. Mark Hord):
l'espace global de nom
l'espace memoire disponible ( ou tas)
les registres
l'espace de code
et la pile.
pour les espaces de noms ...c'est la pile.(mais ou le compilateur difinie la
pile, et qui la gere?).
pour le tas ( alloué avec new), ou le compilateur défini le tas, et y a t il
un lien avec la mémoire paginé ?
en c++ on defini plusieurs types de memoires (d'apres "c++:programmation
sous unix, windows et dos" de jesse Liberty & J. Mark Hord):
l'espace global de nom
l'espace memoire disponible ( ou tas)
les registres
l'espace de code
et la pile.
pour les espaces de noms ...c'est la pile.(mais ou le compilateur difinie la
pile, et qui la gere?).
pour le tas ( alloué avec new), ou le compilateur défini le tas, et y a t il
un lien avec la mémoire paginé ?
en c++ on defini plusieurs types de memoires (d'apres "c++:programmation
sous unix, windows et dos" de jesse Liberty & J. Mark Hord):
l'espace global de nom
l'espace memoire disponible ( ou tas)
les registres
l'espace de code
et la pile.
pour les espaces de noms ...c'est la pile.(mais ou le compilateur difinie la
pile, et qui la gere?).
pour le tas ( alloué avec new), ou le compilateur défini le tas, et y a t il
un lien avec la mémoire paginé ?
En effet. Cela dit puisque la norme confie la gestion de la pile au
compilateur,
quel est intérêt d'utiliser la mémoire dynamique ( tas) ? Le
programmeur devrait pouvoir créer des données a volonté. Je ne pense pas que
le seul critère de choix de l'utilisation de new ( tas) soit la porté de ses
objets au delà de la fin de leur espace de nom.
je ne pensais pas cela possible !! Il me trompe! La différence entre le tas
et la pile sont donc plus conceptuelle que physique.
Une autre question me vient: Il y a t'il un lien direct entre la pile dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par le
registre SP ?
En effet. Cela dit puisque la norme confie la gestion de la pile au
compilateur,
quel est intérêt d'utiliser la mémoire dynamique ( tas) ? Le
programmeur devrait pouvoir créer des données a volonté. Je ne pense pas que
le seul critère de choix de l'utilisation de new ( tas) soit la porté de ses
objets au delà de la fin de leur espace de nom.
je ne pensais pas cela possible !! Il me trompe! La différence entre le tas
et la pile sont donc plus conceptuelle que physique.
Une autre question me vient: Il y a t'il un lien direct entre la pile dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par le
registre SP ?
En effet. Cela dit puisque la norme confie la gestion de la pile au
compilateur,
quel est intérêt d'utiliser la mémoire dynamique ( tas) ? Le
programmeur devrait pouvoir créer des données a volonté. Je ne pense pas que
le seul critère de choix de l'utilisation de new ( tas) soit la porté de ses
objets au delà de la fin de leur espace de nom.
je ne pensais pas cela possible !! Il me trompe! La différence entre le tas
et la pile sont donc plus conceptuelle que physique.
Une autre question me vient: Il y a t'il un lien direct entre la pile dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par le
registre SP ?
Une autre question me vient: Il y a t'il un lien direct entre la pile
dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé
pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par
le
registre SP ?
Je ne connais pas de cas où ce n'est pas la même pile (ce serait se
compliquer la vie pour pas grand chose). Mais le C++ ne l'impose pas.
Une autre question me vient: Il y a t'il un lien direct entre la pile
dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé
pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par
le
registre SP ?
Je ne connais pas de cas où ce n'est pas la même pile (ce serait se
compliquer la vie pour pas grand chose). Mais le C++ ne l'impose pas.
Une autre question me vient: Il y a t'il un lien direct entre la pile
dont
on parle et la pile utilisé par push et pop ( qui en fait sont utilisé
pour
le passage de paramètre aux fonctions ) et dont le haut est pointé par
le
registre SP ?
Je ne connais pas de cas où ce n'est pas la même pile (ce serait se
compliquer la vie pour pas grand chose). Mais le C++ ne l'impose pas.
Je n'ai tjrs pas saisi l'interet de passer par new pour l'allocation
memoire...
je peux tout aussi bien creer mes données a volonté pdt l'execution
du programme dans la pile, c'est meme + simple car j'ai pas à gere
la destruction. Et j'ai le sentiment que sur un x86 de type 80686
ou +, avec windows 2K, et avec VC++ ou intel c++, je n'aurait pas
plus de limitation d'espace memoire dans la pile que dans le tas.
Et que dit la norme sur ce probleme des differentes mémoire ?
Dit autrement, c'est de la sémantique. Peu importe comment le
compilateur gère les différents types d'allocation mémoire du
moment qu'il respecte la sémantique du langage à l'exécution.
sauf que plus je sais ce que fait le compilo et plus je suis capable
d'atteindre le programme que j'avais imaginé.
par rapport a ce que je souhaite obtenir, si je sais ce que fait le compilo
alors c'est plus facile pour moi pour faire ce que je veux.Plus je discocie
qui fait quoi de l'os et du compilo et plus j'ai une vue globale tout en
restant précis.
cela dit on peux tjrs ce referer à la norme, mais je crois de plus en plus
que ce n'est pas suffisant.Tout les compilateurs ne l'ayant pas complètement
et precisement implementé.Et elle dit ce que doit etre capable de renvoyer
le compilo, mais elle ne dit pas qui le fait du compilo ou de l'os.
Je n'ai tjrs pas saisi l'interet de passer par new pour l'allocation
memoire...
je peux tout aussi bien creer mes données a volonté pdt l'execution
du programme dans la pile, c'est meme + simple car j'ai pas à gere
la destruction. Et j'ai le sentiment que sur un x86 de type 80686
ou +, avec windows 2K, et avec VC++ ou intel c++, je n'aurait pas
plus de limitation d'espace memoire dans la pile que dans le tas.
Et que dit la norme sur ce probleme des differentes mémoire ?
Dit autrement, c'est de la sémantique. Peu importe comment le
compilateur gère les différents types d'allocation mémoire du
moment qu'il respecte la sémantique du langage à l'exécution.
sauf que plus je sais ce que fait le compilo et plus je suis capable
d'atteindre le programme que j'avais imaginé.
par rapport a ce que je souhaite obtenir, si je sais ce que fait le compilo
alors c'est plus facile pour moi pour faire ce que je veux.Plus je discocie
qui fait quoi de l'os et du compilo et plus j'ai une vue globale tout en
restant précis.
cela dit on peux tjrs ce referer à la norme, mais je crois de plus en plus
que ce n'est pas suffisant.Tout les compilateurs ne l'ayant pas complètement
et precisement implementé.Et elle dit ce que doit etre capable de renvoyer
le compilo, mais elle ne dit pas qui le fait du compilo ou de l'os.
Je n'ai tjrs pas saisi l'interet de passer par new pour l'allocation
memoire...
je peux tout aussi bien creer mes données a volonté pdt l'execution
du programme dans la pile, c'est meme + simple car j'ai pas à gere
la destruction. Et j'ai le sentiment que sur un x86 de type 80686
ou +, avec windows 2K, et avec VC++ ou intel c++, je n'aurait pas
plus de limitation d'espace memoire dans la pile que dans le tas.
Et que dit la norme sur ce probleme des differentes mémoire ?
Dit autrement, c'est de la sémantique. Peu importe comment le
compilateur gère les différents types d'allocation mémoire du
moment qu'il respecte la sémantique du langage à l'exécution.
sauf que plus je sais ce que fait le compilo et plus je suis capable
d'atteindre le programme que j'avais imaginé.
par rapport a ce que je souhaite obtenir, si je sais ce que fait le compilo
alors c'est plus facile pour moi pour faire ce que je veux.Plus je discocie
qui fait quoi de l'os et du compilo et plus j'ai une vue globale tout en
restant précis.
cela dit on peux tjrs ce referer à la norme, mais je crois de plus en plus
que ce n'est pas suffisant.Tout les compilateurs ne l'ayant pas complètement
et precisement implementé.Et elle dit ce que doit etre capable de renvoyer
le compilo, mais elle ne dit pas qui le fait du compilo ou de l'os.