<nowe > funkcje<new> functions

get_new_handlerget_new_handler

new_handler get_new_handler() noexcept;

UwagiRemarks

Zwraca bieżącą wartość new_handler .Returns the current new_handler.

brudnlaunder

template <class T>
    constexpr T* launder(T* ptr) noexcept;

ParametryParameters

PTRptr
Adres bajtu w pamięci, który zawiera obiekt, którego typ jest podobny do T.The address of a byte in memory which holds an object whose type is similar to T.

Wartość zwracanaReturn Value

Wartość typu T * , która wskazuje na X.A value of type T* that points to X.

UwagiRemarks

Nazywana również barierą optymalizacji wskaźnika.Also referred to as a pointer optimization barrier.

Używane jako wyrażenie stałe, gdy wartość jego argumentu może być używana w wyrażeniu stałym.Used as a constant expression when the value of its argument may be used in a constant expression. Bajty magazynu są dostępne za pomocą wartości wskaźnika, która wskazuje na obiekt, jeśli w ramach magazynu zajętego przez inny obiekt, obiekt o podobnym wskaźniku.A byte of storage is reachable through a pointer value that points to an object if within the storage occupied by another object, an object with a similar pointer.

PrzykładExample

struct X { const int n; };

X *p = new X{3};
const int a = p->n;
new (p) X{5}; // p does not point to new object because X::n is const
const int b = p->n; // undefined behavior
const int c = std::launder(p)->n; // OK

nothrownothrow

Dostarcza obiekt, który ma być używany jako argument dla nothrow wersji new i delete .Provides an object to be used as an argument for the nothrow versions of new and delete.

extern const std::nothrow_t nothrow;

UwagiRemarks

Obiekt jest używany jako argument funkcji do dopasowania do typu parametru std:: nothrow_t.The object is used as a function argument to match the parameter type std::nothrow_t.

PrzykładExample

Zobacz operator new i operator new[] , aby poznać przykłady std::nothrow_t użycia jako parametru funkcji.See operator new and operator new[] for examples of how std::nothrow_t is used as a function parameter.

set_new_handlerset_new_handler

Instaluje funkcję użytkownika, która ma być wywoływana, gdy operator new nie powiedzie się w trakcie próby przydzielenia pamięci.Installs a user function that is to be called when operator new fails in its attempt to allocate memory.

new_handler set_new_handler(new_handler Pnew) throw();

ParametryParameters

PnewPnew
new_handlerDo zainstalowania.The new_handler to be installed.

Wartość zwracanaReturn Value

0 pierwszego wywołania i poprzedni new_handler przy kolejnych wywołaniach.0 on the first call and the previous new_handler on subsequent calls.

UwagiRemarks

Funkcja przechowuje Pnew w statycznym nowym wskaźniku procedury obsługi , który utrzymuje, a następnie zwraca wartość wcześniej przechowywaną we wskaźniku.The function stores Pnew in a static new handler pointer that it maintains, then returns the value previously stored in the pointer. Nowy program obsługi jest używany przez operator new(size_t).The new handler is used by operator new(size_t).

PrzykładExample

// new_set_new_handler.cpp
// compile with: /EHsc
#include<new>
#include<iostream>

using namespace std;
void __cdecl newhandler( )
{
   cout << "The new_handler is called:" << endl;
   throw bad_alloc( );
   return;
}

int main( )
{
   set_new_handler (newhandler);
   try
   {
      while ( 1 )
      {
         new int[5000000];
         cout << "Allocating 5000000 ints." << endl;
      }
   }
   catch ( exception e )
   {
      cout << e.what( ) << endl;
   }
}
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
Allocating 5000000 ints.
The new_handler is called:
bad allocation