_recalloc
Połączenie z realloc i calloc.Reallocates tablicy w pamięci i inicjuje jego elementy na 0.
void *_recalloc(
void *memblock
size_t num,
size_t size
);
Parametry
memblock
Wskaźnik do wcześniej zaalokowanego bloku pamięci.num
Liczba elementów.size
Długość w bajtach każdego elementu.
Wartość zwracana
_recallocZwraca void wskaźnik do bloku pamięci reallocated (i ewentualnie przeniesiony).
Jeśli jest za mało dostępnej pamięci, aby rozwinąć bloku do podanego rozmiaru, oryginalnego bloku pozostanie niezmieniona, i NULL jest zwracany.
Jeśli żądany rozmiar wynosi zero, a następnie blok wskazywanej przez memblock jest zwolniona; zwracana jest wartość NULL, i memblock jest po lewej, wskazującego blok zwalniane.
Zwracana wartość wskazuje miejsce w magazynie jest gwarantowane zostały odpowiednio dostosowane do przechowywania dowolnego typu obiektu.Aby uzyskać wskaźnika typu innego niż void, użyj typu oddanych na wartości zwracanej.
Uwagi
_recalloc Funkcji zmienia rozmiar bloku alokacji pamięci.memblock Argument wskazuje początek bloku pamięci.Jeśli memblock jest NULL, _recalloc zachowuje się w taki sam sposób jak calloc i przydziela nowy blok num * size bajtów.Każdy element jest inicjowany na 0.Jeśli memblock nie jest NULL, powinno się wskaźnik, zwrócony przez poprzednie wywołanie calloc, funkcja malloc, lub odśmiecacz.
Ponieważ nowy blok może być w nowej lokalizacji w pamięci, wskaźnik zwracany przez _recalloc nie jest gwarantowane jest wskaźnik przekazany przez memblock argument.
_recallocUstawia errno do ENOMEM Jeśli alokacja pamięci nie powiedzie się lub jeśli żądana ilość pamięci, przekracza _HEAP_MAXREQ.Aby uzyskać informacje na temat tego i innych kodów błędów, zobacz errno, _doserrno, _sys_errlist i _sys_nerr.
recallocwywołania realloc do użyć C++ _set_new_mode funkcji, aby ustawić nowy tryb obsługi.Nowy tryb obsługi wskazuje, czy w przypadku awarii, realloc jest wywołanie procedury obsługi nowych określone przez _set_new_handler.Domyślnie realloc nie wywołuje nowe procedury obsługi na nie można przydzielić pamięci.Można zastąpić to zachowanie domyślne tak, aby, kiedy _recalloc nie można przydzielić pamięci, realloc wywołuje nowe procedury obsługi w taki sam sposób new operator wykonuje, gdy go nie powiedzie się z tego samego powodu.Aby zastąpić ustawienia domyślne, zadzwoń
_set_new_mode(1)
wczesne w programie lub łącze z NEWMODE.OBJ.
Gdy aplikacja jest połączony z debugowania wersją biblioteki uruchomieniowej C, _recalloc jest rozpoznawany jako _recalloc_dbg.Aby uzyskać więcej informacji na temat jak sterty jest zarządzany w trakcie debugowania, zobacz The CRT debugowania sterty.
_recallocjest oznaczony jako __declspec(noalias) i __declspec(restrict), co oznacza, że funkcja zagwarantowane jest nie do modyfikacji zmiennych globalnych, i że zwrócony wskaźnik nie jest aliasu.Aby uzyskać więcej informacji, zobacz noalias i ograniczyć.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_recalloc |
<stdlib.h> i <malloc.h> |
Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.