|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
Inscription : mai 2011 Messages : 24 ![]() |
Salut tout le monde ,
Je n'ai pas compris à quoi sert la procedure new sur Pascal, parce que les pointeurs je vois qu'il sont automatiquement alloués sans "new" ! Deuxièmement , si je veux libérer une case mémoire je vais utiliser freemem ou bien dispose ? La dernière question : si un pointeur est nil, il n'occupe aucun bit ? |
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() |
Bonjour,
Les pointeurs sont déclarés comme variables, pas alloués automatiquement. Qu'ils aient la valeur nil ou toute autre valeur, la variable a la même taille. New alloue un bloc de mémoire dans le tas, de la taille du type pointé par le pointeur qui lui est transmis, et renvoie l'adresse du bloc dans le pointeur. GetMem alloue un bloc de mémoire dans le tas, de la taille qui lui est explicitement transmise. Habituellement, on utilise Dispose pour désallouer une variable allouée par New et FreeMem pour désallouer une variable allouée par GetMem. Exemple : Code :
__________________
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell] |
||
|
00
|
|
|
#3 | |||||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 432 ![]() |
Citation:
un pointeur occupe toujours 4 octets (en 32 bits), et il contient une adresse mémoire. "nil" est simplement la valeur 0. si l'adresse mémoire stockée dans le pointeur est celle d'une variable statique, il n'y a pas d'allocation supplémentaire. Code :
Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|||||
|
00
|
|
|
#4 | |||
Inscription : mai 2011 Messages : 24 ![]() |
merci bien mais j'ai pas trouver ce que je cherche dans vos réponses !
je vais expliquer mieux mon problème en langage algorithmique on a l'habitude a a faire ça Citation:
Citation:
le deuxième problème c'est : une variable de type pointeur occupe 4 octet c'est on fait Citation:
et merci encore pour vos réponses |
|||
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() |
Citation:
Si tu n'alloues pas de variable dynamique, le pointeur p contient une adresse indéfinie et tu vas aller écrire la valeur 5 n'importe où en mémoire. Citation:
__________________
Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell] |
||
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 432 ![]() |
Citation:
Citation:
soit un entier "i : Integer" il occupera toujours 4 octets, que sa valeur soit 10000 125 ou 0 ! un Pointeur c'est pareil.
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
||
|
00
|
|
|
#7 |
Inscription : mai 2011 Messages : 24 ![]() |
donc il va réserver une place quelconque dans la memoire si je fais pas new,
mais est ce que ça provoque un probleme ? je vois que non !! parce que je peux l'accéder lorsque je veux |
|
|
00
|
|
|
#8 | |||
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 432 ![]() |
Citation:
Code :
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|||
|
00
|
|
|
#9 | |
|
Membre habitué
![]() Emilien Étudiant Inscription : octobre 2010 Messages : 69 ![]() |
Citation:
|
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com