Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La libreria C Runtime (CRT) contiene versioni di debug speciali delle funzioni di allocazione dell'heap. Queste funzioni hanno gli stessi nomi delle versioni release con _dbg accodamento. Questo articolo descrive le differenze tra la versione Release di una funzione CRT e la _dbg versione, usando malloc e _malloc_dbg come esempi.
Comportamento nelle compilazioni di debug
Quando _DEBUG viene definito, CRT esegue il mapping di tutte le malloc chiamate a _malloc_dbg. Pertanto, non è necessario riscrivere il codice usando _malloc_dbg invece di malloc ricevere i vantaggi durante il debug.
È tuttavia possibile chiamare _malloc_dbg esplicitamente. La chiamata esplicita di _malloc_dbg presenta alcuni vantaggi supplementari:
Registrazione delle allocazioni del tipo
_CLIENT_BLOCK.Memorizzazione del file sorgente e del numero di riga nel punto in cui ha avuto luogo la richiesta di allocazione.
Se non si desidera convertire le malloc chiamate in _malloc_dbg, è possibile ottenere le informazioni sul file di origine definendo _CRTDBG_MAP_ALLOC, che fa in modo che il preprocessore eselabori direttamente tutte le chiamate a _malloc_dbg malloc in anziché basarsi su un wrapper intorno malloca .
Per registrare i tipi separati di allocazioni in blocchi client, è necessario chiamare _malloc_dbg direttamente e impostare il parametro blockType su _CLIENT_BLOCK.
Comportamento nelle compilazioni non di debug
Quando _DEBUG non viene definita, le chiamate a malloc non vengono disturbate, le chiamate a _malloc_dbg vengono risolte in malloc, la definizione di _CRTDBG_MAP_ALLOC viene ignorata e le informazioni sul file di origine relative alla richiesta di allocazione non vengono fornite. Poiché malloc non ha un parametro di tipo di blocco, le richieste per _CLIENT_BLOCK i tipi vengono considerate come allocazioni standard.