Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1130 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  pointeurs

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pointeurs

n°1773629
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 15-08-2008 à 17:41:39  profilanswer
 

Bonjour, j'étudie la programmation et j'en suis aux pointeurs, j'ai beau cherché sur le forum ou google je comprend pas leur utilité :/
stockés les données dans la mémoire global j'ai lu, mais j'ai pas compris ce que sa signifie.

 

est-ce que quelqu'un pourrait m'expliquer ou me donner un lien. J'ai à peut près compris comment les utiliser sa il y a plein de tuto mais pas pourquoi.

 

j'ai trouvé sa:
Leur intérêt réside dans la gestion de la mémoire, sujet dont je vais parler juste un petit peu. La mémoire que vous utilisez dans vos programmes n'est pas illimitée : il faut éviter au maximum d'en utiliser de grosses quantités sans passer par les pointeurs. Cette mémoire se décompose à peu près en deux parties : la mémoire locale, et la mémoire globale. La première est celle que vous utilisez lorsque vous déclarez une variable locale par exemple. Cette mémoire est de taille très limitée. La mémoire globale, en revanche, est virtuellement limitée à 4 gigaoctets et Windows s'occupe d'en fournir lorsque c'est nécessaire. C'est là que les pointeurs interviennent : lorsque vous déclarez par exemple 100 enregistrements de type TPersonne, ces enregistrements sont stockés en mémoire locale, ce qui occupe pas mal de place. En utilisant des pointeurs, seuls ces derniers sont stockés en mémoire locale, et les éléments pointés le sont dans la mémoire globale.

 

je comprend mais alors quel taille fais la mémoire local, quand doit-ton utiliser des pointeurs?

 

merci.


Message édité par ouiouioui10 le 15-08-2008 à 17:50:06
mood
Publicité
Posté le 15-08-2008 à 17:41:39  profilanswer
 

n°1773940
antp
Super Administrateur
Champion des excuses bidons
Posté le 17-08-2008 à 19:11:43  profilanswer
 

Je suppose que ça fait allusion à la pile sur laquelle sont stockées les variables locales d'une fonction.
Parce que si ça fait allusion à local heap / global heap, cette différence date de Windows 3.x et ça ne s'applique pas aux softs Win32.

 

Réserver 1 Go sur la pile :

 

function Machin;
var
  test1: array[0..1000000000] of Byte;
begin
  test1[0] := 1;
end;

 

ça explose avec un beau "stack overflow"

 

alors qu'avec un tableau dynamique qui est en fait un pointeur :

 

function Machin;
var
  test2: array of Byte;
begin
  SetLength(test2, 1000000000);
  test2[0] := 1;
end;

 

ça passe (bon, il faut assez de RAM évidemment :D)


Message édité par antp le 17-08-2008 à 19:12:15

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1774387
rengzehn
Posté le 19-08-2008 à 11:12:06  profilanswer
 

Salut,

 

Perso j'ai utilisé les pointeurs longtemps quand il n'était pas trop possible de créer des objets de taille variable (tableaux par exemple). L'interet des pointeur était alors la gestion dynamique de la mémoire. C'est principalement couplé aux listes chainées.

 

Exemple : tu as un fichier texte avec une valeur réelle sur chaque ligne et tu veux en faire la moyenne ne connaissant pas le nombre de lignes du fichier. Des langages n'autorisent pas la création de tableau avec une taille dynamique. Avec les pointeurs tu gères ça comme tu veux. Ca permet de stocker n'importe quel type de variable en n'importe quelle quantité (avec les limites physiques tout de même).

 

De la même manière, tu libères les espaces plus utilisés facilement.

 


Message édité par rengzehn le 19-08-2008 à 11:14:15
n°1774401
ouiouioui1​0
ChuckNorris sait diviser par 0
Posté le 19-08-2008 à 11:45:39  profilanswer
 

ok donc c'est pour les très gros projets. merci de la réponse. Pour antp un tableau dynamique est un pointeur? Je croyais que pour accéder aux pointeurs il fallait:
test2[0]^ := 1;

n°1774407
antp
Super Administrateur
Champion des excuses bidons
Posté le 19-08-2008 à 12:03:40  profilanswer
 

Un tableau dynamique est géré en interne comme un pointeur (cf exemple de code), c'est juste plus facile à utiliser.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1774443
rengzehn
Posté le 19-08-2008 à 13:36:19  profilanswer
 

ouiouioui10 a écrit :

ok donc c'est pour les très gros projets. merci de la réponse. Pour antp un tableau dynamique est un pointeur? Je croyais que pour accéder aux pointeurs il fallait:
test2[0]^ := 1;


 
Non pas forcement des gros projets, n'importe quel type de programme du moment ou tu as besoin de travailler sur des structures dont tu ne connais pas le nombre d'entités. C'est beaucoup utilisé en Pascal et en C ou tu ne peux pas créer de tableau de taille non fixée comme :
 
var
  test1: array[0..N] of Byte;
 
ou N est défini par ailleurs dans le programme.
 
C'est très lié aux listes chaînées et si tu étudies les pointeurs, il faut que tu aies compris ce qu'est une liste chaînée pour comprendre un des principaux intérêts des pointeurs.
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  pointeurs

 

Sujets relatifs
getteurs et setteurs sur des pointeursStocker des pointeurs de fichiers dans une structure : c'est mal?
Problème avec les pointeurs (thread)Pointeurs de fonctions et polymorphisme
classes dérivées et pointeursPetite question sur la stl et les pointeurs.
je ne sais pas comment manipuler les pointeurs :(Prog µcontrolleur : Ports et pointeurs ...
Les pointeurs: je bloqueVecteur de pointeurs d objet
Plus de sujets relatifs à : pointeurs


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR