Sdílet prostřednictvím


Ladění verzí funkcí přidělení haldy

Knihovna C runtime (CRT) obsahuje speciální ladicí verze funkcí přidělení haldy. Tyto funkce mají stejné názvy jako verze vydané verze s připojenými verzemi _dbg . Tento článek popisuje rozdíly mezi verzí funkce CRT a _dbg verzí, a to pomocí malloc a _malloc_dbg jako příklady.

Chování při sestaveních ladění

Pokud _DEBUG je definován, CRT mapuje všechna malloc volání na _malloc_dbg. Proto nemusíte kód přepisovat pomocí funkce, _malloc_dbg abyste malloc při ladění získali výhody.

Můžete ale chtít volat _malloc_dbg explicitně. Volání _malloc_dbg explicitně má některé další výhody:

  • Přidělování typů sledování _CLIENT_BLOCK

  • Uložení zdrojového souboru a čísla řádku, kde došlo k žádosti o přidělení.

Pokud nechcete převést volání na _malloc_dbg, můžete získat informace o zdrojovém souboru definováním _CRTDBG_MAP_ALLOC, což způsobí, že preprocesor přímo mapuje všechna volánímalloc, aby _malloc_dbg se nemusela spoléhat na obálku kolem malloc.malloc

Pokud chcete sledovat samostatné typy přidělení v blocích klienta, musíte volat _malloc_dbg přímo a nastavit blockType parametr na _CLIENT_BLOCK.

Chování v sestaveních, která nejsou laděná

Pokud _DEBUG není definována, volání, která malloc nejsou narušena, volání _malloc_dbg se přeloží mallocna , definice _CRTDBG_MAP_ALLOC je ignorována a informace o zdrojovém souboru týkající se žádosti o přidělení nejsou k dispozici. Vzhledem k tomu malloc , že parametr typu bloku nemá, požadavky na _CLIENT_BLOCK typy se považují za standardní přidělení.

Viz také

Techniky ladění CRT