Condividi tramite


Metodo IMalloc::Realloc (objidl.h)

Modifica le dimensioni di un blocco di memoria allocato in precedenza.

Sintassi

void * Realloc(
  [in] void   *pv,
  [in] SIZE_T cb
);

Parametri

[in] pv

Puntatore al blocco di memoria da riallocare. Questo parametro può essere NULL, come illustrato nella sezione Osservazioni di seguito.

[in] cb

Dimensioni del blocco di memoria da riallocare in byte. Questo parametro può essere 0, come illustrato nella sezione Osservazioni di seguito.

Valore restituito

Se il metodo ha esito positivo, il valore restituito è un puntatore al blocco reale di memoria. In caso contrario, è NULL.

Commenti

Questo metodo rialloca un blocco di memoria, ma non garantisce che il contenuto venga inizializzato. Pertanto, il chiamante è responsabile dell'inizializzazione successiva della memoria. Il blocco allocato può essere maggiore di cb byte a causa dello spazio necessario per l'allineamento e per le informazioni di manutenzione.

L'argomento pv punta all'inizio del blocco. Se pv è NULL, Realloc alloca un nuovo blocco di memoria nello stesso modo in cui IMalloc::Alloc esegue. Se pv non è NULL, deve essere un puntatore restituito da una chiamata precedente a Alloc.

L'argomento cb specifica le dimensioni del nuovo blocco, in byte. Il contenuto del blocco rimane invariato fino alla più breve dimensione, tra la nuova e la precedente, anche se il nuovo blocco può trovarsi in una posizione diversa. Poiché il nuovo blocco può trovarsi in una posizione di memoria diversa, il puntatore restituito da Realloc non è garantito che sia il puntatore passato tramite l'argomento pv . Se pv non è NULL e cb è zero, la memoria puntata da pv viene liberata.

Realloc restituisce un puntatore void al blocco di memoria reale (e possibilmente spostato). Il valore restituito è NULL se la dimensione è zero e l'argomento del buffer non è NULL o se non è disponibile memoria sufficiente per espandere il blocco alle dimensioni specificate. Nel primo caso, il blocco originale viene liberato; nel secondo, il blocco originale è invariato.

Lo spazio di archiviazione a cui punta il valore restituito garantisce il corretto allineamento per l'archiviazione di qualsiasi tipo di oggetto. Per ottenere un puntatore a un tipo diverso da void, usare un cast di tipi sul valore restituito.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h (include ObjIdl.h)

Vedi anche

IMalloc