Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Biblioteka środowiska uruchomieniowego języka C (CRT) zawiera specjalne wersje debugowania funkcji alokacji sterty. Te funkcje mają takie same nazwy jak wersje wydania z _dbg dołączonym do nich. W tym artykule opisano różnice między wersją wydania funkcji CRT i _dbg wersją, przy użyciu malloc i _malloc_dbg jako przykłady.
Zachowanie w kompilacjach debugowania
Po _DEBUG zdefiniowaniu CRT mapuje wszystkie malloc wywołania na _malloc_dbg. W związku z malloc tym nie trzeba ponownie pisać kodu przy użyciu _malloc_dbg funkcji zamiast otrzymywać korzyści podczas debugowania.
Możesz jednak wywołać _malloc_dbg jawnie. Wywołanie _malloc_dbg jawnie ma pewne dodatkowe korzyści:
Alokacje typów śledzenia
_CLIENT_BLOCK.Przechowywanie pliku źródłowego i numeru wiersza, w którym wystąpiło żądanie alokacji.
Jeśli nie chcesz konwertować malloc wywołań na _malloc_dbg, możesz uzyskać informacje o pliku źródłowym, definiując _CRTDBG_MAP_ALLOCelement , co powoduje, że preprocesor ma bezpośrednio mapować wszystkie wywołania na malloc element _malloc_dbg zamiast polegać na otoce wokół mallocelementu .
Aby śledzić oddzielne typy alokacji w blokach klienta, należy wywołać _malloc_dbg bezpośrednio i ustawić blockType parametr na _CLIENT_BLOCK.
Zachowanie w kompilacjach nie debugowania
Jeśli _DEBUG nie jest zdefiniowana, wywołania nie malloc są zakłócone, wywołania _malloc_dbg do są rozpoznawane jako malloc, definicja _CRTDBG_MAP_ALLOC jest ignorowana, a informacje o pliku źródłowym odnoszące się do żądania alokacji nie są udostępniane. Ponieważ malloc nie ma parametru typu bloku, żądania dla _CLIENT_BLOCK typów są traktowane jako standardowe alokacje.