_aligned_offset_malloc_dbg
Alloca la memoria in un limite di allineamento specificato (solo versione di debug).
Sintassi
void * _aligned_offset_malloc_dbg(
size_t size,
size_t alignment,
size_t offset,
const char *filename,
int linenumber
);
Parametri
size
Dimensione dell'allocazione di memoria richiesta.
alignment
Valore di allineamento, che deve essere una potenza intera di 2.
offset
Offset nell'allocazione di memoria per imporre l'allineamento.
filename
Puntatore al nome del file di origine che ha richiesto l'operazione di allocazione o NULL
.
linenumber
Numero di riga nel file di origine in cui è stata richiesta l'operazione di allocazione o NULL
.
Valore restituito
Puntatore al blocco di memoria allocato o NULL
se l'operazione non è riuscita.
Osservazioni:
_aligned_offset_malloc_dbg
è una versione di debug della _aligned_offset_malloc
funzione. Quando _DEBUG
non è definito, ogni chiamata a _aligned_offset_malloc_dbg
viene ridotta a una chiamata a _aligned_offset_malloc
. Sia _aligned_offset_malloc
che _aligned_offset_malloc_dbg
allocano un blocco di memoria nell'heap di base, ma _aligned_offset_malloc_dbg
contiene diverse funzionalità di debug: buffer presenti a entrambi i lati della porzione utente del blocco in cui verificare la presenza di perdite e informazioni su filename
/linenumber
per determinare l'origine delle richieste di allocazione. Il rilevamento di tipi di allocazione specifici con un parametro di tipo di blocco non è una funzionalità di debug supportata per le allocazioni allineate. Le allocazioni allineate verranno visualizzate come _NORMAL_BLOCK
tipo di blocco.
_aligned_offset_malloc_dbg
alloca il blocco di memoria con una quantità di spazio appena superiore a quella richiesta da size
. Lo spazio aggiuntivo viene usato dal gestore dell'heap di debug per collegare i blocchi di memoria di debug e per fornire all'applicazione informazioni sull'intestazione di debug e buffer di sovrascrittura. Quando il blocco viene allocato, la parte utente del blocco viene riempita con il valore 0xCD e ognuno dei buffer di sovrascrittura viene riempito con 0xFD.
_aligned_offset_malloc_dbg
è utile nelle situazioni in cui è necessario l'allineamento in un elemento annidato, ad esempio, nel caso in cui è stato necessario l'allineamento in una classe annidata.
_aligned_offset_malloc_dbg
è basato su malloc
. Per altre informazioni, vedere malloc
.
La funzione imposta errno
su ENOMEM
se l'allocazione di memoria non riesce o se la dimensione richiesta è maggiore di _HEAP_MAXREQ
. Per altre informazioni su errno
, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
. _aligned_offset_malloc
, inoltre, convalida i propri parametri. Se alignment
non è una potenza di 2 o se offset
è diverso da zero e maggiore o uguale a size
, questa funzione richiama il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce NULL
e imposta errno
su EINVAL
.
Per informazioni sulla modalità di allocazione, inizializzazione e gestione dei blocchi di memoria nella versione di debug dell'heap di base, vedere Dettagli dell'heap di debug CRT.
Per informazioni sui tipi di blocchi di allocazione e sul modo in cui vengono usati, vedere Tipi di blocchi nell'heap di debug.
Requisiti
Ciclo | Intestazione obbligatoria |
---|---|
_aligned_offset_malloc_dbg |
<crtdbg.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Librerie
Solo le versioni di debug delle librerie di runtime di C.