Differenze tra le versioni di "Cambiare la dimensione di un'area di memoria mediante Realloc()"

Da Gambas-it.org - Wikipedia.
 
Riga 4: Riga 4:
  
 
Mostriamo un semplicissimo esempio:
 
Mostriamo un semplicissimo esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim p1, p2 As Pointer
 
   Dim p1, p2 As Pointer
 
    
 
    
 
  <FONT Color=gray>' ''Allochiamo con la funzione "Alloc()" un'area di memoria pari a 4 byte:''</font>
 
  <FONT Color=gray>' ''Allochiamo con la funzione "Alloc()" un'area di memoria pari a 4 byte:''</font>
  p1 = Alloc(SizeOf(gb.Byte), 4)
+
  p1 = Alloc(SizeOf(gb.Byte), 4)
 
    
 
    
 
  <FONT Color=gray>' ''Riallochiamo per una dimensione di 8 byte l'area di memoria precedentemente allocata di 4 byte:''</font>
 
  <FONT Color=gray>' ''Riallochiamo per una dimensione di 8 byte l'area di memoria precedentemente allocata di 4 byte:''</font>
  p2 = <FONT Color=#B22222>Realloc</font>(p1, SizeOf(gb.Byte), <FONT Color=#B22222>8</font>)
+
  p2 = <FONT Color=#B22222>Realloc</font>(p1, SizeOf(gb.Byte), <FONT Color=#B22222>8</font>)
 
    
 
    
 
  <FONT Color=gray>' ''Liberiamo la memoria complessivamente allocata (8 byte) e puntata dalla variabile di tipo 'Puntatore' "p2":''</font>
 
  <FONT Color=gray>' ''Liberiamo la memoria complessivamente allocata (8 byte) e puntata dalla variabile di tipo 'Puntatore' "p2":''</font>
  Free(p2)
+
  Free(p2)
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 04:40, 8 giu 2024

La funzione "Realloc()" consente di assegnare al Puntatore una nuova e differente dimensione di un'area di memoria precedentemente allocata con la funzione "Alloc()".
La riallocazione della memoria mediante la funzione "Realloc()" comporterà la deallocazione automatica della precedente area di memoria riservata. Pertanto sarà sufficiente al termine del programma liberare la sola memoria riservata con la funzione "Realloc()".


Mostriamo un semplicissimo esempio:

Public Sub Main()
 
 Dim p1, p2 As Pointer
 
' Allochiamo con la funzione "Alloc()" un'area di memoria pari a 4 byte:
 p1 = Alloc(SizeOf(gb.Byte), 4)
  
' Riallochiamo per una dimensione di 8 byte l'area di memoria precedentemente allocata di 4 byte:
 p2 = Realloc(p1, SizeOf(gb.Byte), 8)
  
' Liberiamo la memoria complessivamente allocata (8 byte) e puntata dalla variabile di tipo 'Puntatore' "p2":
 Free(p2)
  
End