_aligned_offset_malloc_dbg
Przydziela pamięć na określonej granicy wyrównania (tylko w wersji do debugowania).
Składnia
void * _aligned_offset_malloc_dbg(
size_t size,
size_t alignment,
size_t offset,
const char *filename,
int linenumber
);
Parametry
size
Rozmiar alokacji żądanej pamięci.
alignment
Wartość wyrównania, która musi być całkowitą potęgą liczby 2.
offset
Przesunięcie alokacji pamięci, aby wymusić wyrównanie.
filename
Wskaźnik do nazwy pliku źródłowego, który zażądał operacji alokacji lub NULL
.
linenumber
Numer wiersza w pliku źródłowym, w którym zażądano operacji alokacji lub NULL
.
Wartość zwracana
Wskaźnik do bloku pamięci, który został przydzielony lub NULL
jeśli operacja nie powiodła się.
Uwagi
_aligned_offset_malloc_dbg
jest wersją _aligned_offset_malloc
debugowania funkcji. Jeśli _DEBUG
nie jest zdefiniowane, każde wywołanie metody _aligned_offset_malloc_dbg
jest zmniejszane do wywołania metody _aligned_offset_malloc
. Zarówno _aligned_offset_malloc
, jak i _aligned_offset_malloc_dbg
przydziel blok pamięci w stercie podstawowej, ale _aligned_offset_malloc_dbg
oferuje kilka funkcji debugowania: po obu stronach bloku w celu przetestowania przecieków i filename
/linenumber
informacji w celu określenia źródła żądań alokacji. Śledzenie określonych typów alokacji przy użyciu parametru typu bloku nie jest obsługiwaną funkcją debugowania dla wyrównanych alokacji. Alokacje wyrównane będą wyświetlane jako _NORMAL_BLOCK
typ bloku.
_aligned_offset_malloc_dbg
przydziela blok pamięci z nieco większą ilością miejsca niż żądany size
element . Dodatkowe miejsce jest używane przez menedżera sterty debugowania, aby połączyć bloki pamięci debugowania i udostępnić aplikacji informacje nagłówka debugowania i zastąpić. Po przydzieleniu bloku część użytkownika bloku jest wypełniona wartością 0xCD, a każdy z zastępowania jest wypełniony 0xFD.
_aligned_offset_malloc_dbg
jest przydatna w sytuacjach, w których dopasowanie jest wymagane dla zagnieżdżonego elementu; na przykład jeśli w klasie zagnieżdżonej potrzebne było wyrównanie.
_aligned_offset_malloc_dbg
jest oparty na malloc
; aby uzyskać więcej informacji, zobacz malloc
.
Ta funkcja ustawia errno
na ENOMEM
jeśli alokacja pamięci nie powiodła się lub jeśli żądany rozmiar był większy niż _HEAP_MAXREQ
. Aby uzyskać więcej informacji na temat errno
programu , zobaczerrno
, _doserrno
, _sys_errlist
i _sys_nerr
. _aligned_offset_malloc
Ponadto weryfikuje jego parametry. Jeśli alignment
nie jest potęgą 2 lub jeśli offset
nie ma wartości zero i jest większa niż lub równa size
, ta funkcja wywołuje nieprawidłową procedurę obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów. Jeśli wykonanie jest dozwolone do kontynuowania, ta funkcja zwraca NULL
i ustawia wartość errno
.EINVAL
Aby uzyskać informacje na temat przydzielania, inicjowania i zarządzania blokami pamięci w wersji debugowania sterty podstawowej, zobacz szczegóły sterty debugowania CRT.
Aby uzyskać informacje o typach bloków alokacji i sposobie ich użycia, zobacz Typy bloków na stercie debugowania.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_aligned_offset_malloc_dbg |
<crtdbg.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Debugowanie tylko wersji bibliotek czasu wykonywania języka C.