Udostępnij za pośrednictwem


_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.

Zobacz też

Informacje

Alokacja pamięci

_recalloc_dbg

_aligned_recalloc

_aligned_offset_recalloc

free

Koncepcje

Opcje łącza