Metodo IMalloc::Realloc (objidlbase.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 di memoria riallocato. In caso contrario, è NULL.
Commenti
Questo metodo rialloca un blocco di memoria, ma non garantisce che il relativo 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 a cui punta pv viene liberata.
Realloc restituisce un puntatore void al blocco di memoria riallocato (ed eventualmente spostato). Il valore restituito è NULL se la dimensione è zero e l'argomento del buffer non è NULL oppure 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 rimane 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 tipo 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 | objidlbase.h (include ObjIdl.h) |