[c++ ] Fonçons dans le tas !

Fonçons dans le tas ! [c++ ] - C++ - Programmation

Marsh Posté le 18-05-2002 à 09:21:19    

Alors voilà...
J'ai 2 classes, CJoueur et CBut.
Dans CJoueur, j'ai besoin de stocker les nombreux buts marqués par cette star !
Vu que je gère aussi un tableau de joueurs déclaré comme suit :
CJoueur *tab = new CJoueur[23];  
 
est-ce que je peux déclarer mon tableau de buts dans le joueur comme ceci : CBut tbut[10] ? Où sera-t-il placé en mémoire ? Dans la pile, ou ailleurs avec l'objet CJoueur auquel il est rattaché ?  :pt1cable:

 

[jfdsdjhfuetppo]--Message édité par John of the Baptiste le 18-05-2002 à 09:26:09--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 18-05-2002 à 09:21:19   

Reply

Marsh Posté le 18-05-2002 à 10:00:29    

Siouplait aidez moi, je suis completement perdu avec ces histoires de pile et de tas !  :cry:

Reply

Marsh Posté le 18-05-2002 à 10:49:26    

Oui ça dépendra de l'endroit où le joueur est instancié.

Reply

Marsh Posté le 18-05-2002 à 11:34:08    

Je crois que quand tu fais CBut tbut[10] il met tout sur la pile, alors que CBut *tbut[10] il met que la liste de pointeurs sur la pile, et les instanciation se font en mémoire... (Enfin vu que la pile est en mémoire aussi :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-05-2002 à 12:05:05    

antp a écrit a écrit :

Je crois que quand tu fais CBut tbut[10] il met tout sur la pile, alors que CBut *tbut[10] il met que la liste de pointeurs sur la pile, et les instanciation se font en mémoire... (Enfin vu que la pile est en mémoire aussi :D)  




 
ça je sais, mais comme le tableau de buts est déclaré à l'intérieur du joueur, c'est plus pareil, non ?

Reply

Marsh Posté le 18-05-2002 à 12:13:11    

ce que tu appelle pile c'est un espace de memoire reservé aux variables locales lors d'un appel de fonction. Qd tu alloue de la memoire via un new, c'est le tas qui est utilisé. Tes instances de joueurs vont donc se trouver sur le tas y compris la classe aggregé but, quel que soit son type d'allocation. Par contre les 4 octets utilisés pour stocker le pointeur vers le tableau de joueurs eux seront peut-etre alloués sur une pile en fonction de comment tu les declares.

 

[jfdsdjhfuetppo]--Message édité par wpk le 18-05-2002 à 12:14:37--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 18-05-2002 à 12:15:30    

wpk a écrit a écrit :

ce que tu appelle pile c'est un espace de memoire reservé aux variables locales lors d'un appel de fonction. Qd tu alloue de la memoire via un new, c'est le tas qui est utilisé. Tes instances de joueurs vont donc se trouver sur le tas y compris la classe aggregé but, quel que soit son type d'allocation. Par contre les 4 octets utilisés pour stocker le pointeur vers le tableau de joueurs lui sera peut-etre alloué sur une pile en fonction de comment tu le declares.  




 
Ok merci !  :)  
Les 4 octets du pointeur, c'est pas grave, des centaines d'objets stockés à la porc dans la pile, ça c'est plus emmerdant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed