Пространства имён
Варианты
Действия

<div class="t-tr-text">оператора<div class="t-tr-dropdown"><div><div><div class="t-tr-dropdown-arrow-border"></div><div class="t-tr-dropdown-arrow"></div><div class="t-tr-dropdown-h">Оригинал:</div><div class="t-tr-dropdown-orig">operator</div><div class="t-tr-dropdown-notes">Текст был переведён автоматически через [http://translate.google.com Google Translate].<br/> Вы можете проверить и исправить перевод. Для инструкций кликните [http://en.cppreference.com/w/Cppreference:MachineTranslations сюда].</div></div></div></div></div> new<div class="t-tr-text">, Оператор<div class="t-tr-dropdown"><div><div><div class="t-tr-dropdown-arrow-border"></div><div class="t-tr-dropdown-arrow"></div><div class="t-tr-dropdown-h">Оригинал:</div><div class="t-tr-dropdown-orig">, operator</div><div class="t-tr-dropdown-notes">Текст был переведён автоматически через [http://translate.google.com Google Translate].<br/> Вы можете проверить и исправить перевод. Для инструкций кликните [http://en.cppreference.com/w/Cppreference:MachineTranslations сюда].</div></div></div></div></div> new[]

Материал из cppreference.com
< cpp‎ | memory‎ | new

 
 
 
 
Низкий уровень управления памятью
Функции
Оригинал:
Functions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
operator new
operator new[]
operator delete
operator delete[]
get_new_handler(C++11)
set_new_handler
Классы
Оригинал:
Classes
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
bad_alloc
bad_array_new_length(C++11)
nothrow_t
Типы
Оригинал:
Types
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
new_handler
Objects
Оригинал:
Objects
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
nothrow
 
Определено в заголовочном файле <new>
void* operator new  ( std::size_t count );
(1)
void* operator new[]( std::size_t count );
(2)
void* operator new  ( std::size_t count, const std::nothrow_t& );
(3)
void* operator new[]( std::size_t count, const std::nothrow_t& );
(4)
void* operator new  ( std::size_t, void* ptr );
(5)
void* operator new[]( std::size_t, void* ptr );
(6)
Выделяет запрошенное количество байт. Эти распределения функции вызываются новых выражений для выделения памяти, в которой новый объект затем будет инициализирован.
Оригинал:
Allocates requested number of bytes. These allocation functions are called by новых выражений to allocate memory in which new object would then be initialized.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
1-2)
Выделяет count байт из бесплатных магазине. Вызывает функцию указатель, возвращенный std::get_new_handler в случае неудачи и повторяет распределение попытки до тех пор пока новый обработчик не возвращается, либо становится пустой указатель, на котором бросает std::bad_alloc.
Оригинал:
Allocates count bytes from free store. Calls the function pointer returned by std::get_new_handler on failure and repeats allocation attempts until new handler does not return or becomes a null pointer, at which time throws std::bad_alloc.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
3-4)
То же, что 1-2, но возвращает пустой указатель, когда 1-2 бросит std::bad_alloc
Оригинал:
Same as 1-2, but returns a null pointer when 1-2 would throw std::bad_alloc
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
5-6)
ничего не делает, возвращается ptr. Эти версии называется новое выражение, которое строится объектов в ранее выделенных хранения.
Оригинал:
does nothing, returns ptr. These versions are called by new-expression which construct objects in previously allocated storage.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

Содержание

[править] Замена и перегрузки

Версий 1-4) неявно объявленный в каждой единице трансляции, даже если <new> заголовок не включается. Эти функции' сменный: предоставленные пользователями, не являющимися членами функции с той же подписью заменяет неявное версии. В более одной замены могут быть предоставлены для каждой из четырех неявной функции распределения. Кроме того, программа может определить класс версий членов этих функций или определить распределение функций с различными подписями (кроме того, что он не допускается замена (5-6) версии распределение функций). Добавить подпись должна выглядеть следующим образом, где count это количество байт для распределения и' placement_params являются параметры подаваемого в new выражение:
Оригинал:
The versions 1-4) are implicitly declared in each translation unit even if the <new> header is not included. These functions are replaceable: a user-provided non-member function with the same signature replaces the implicit version. At most one replacement may be provided for each of the four implicit allocation functions. Also, program can define class member versions of these functions or define allocation functions with different signatures (except that it is not permitted to replace (5-6) versions of the allocation function). The added signature should look like the following, where count is number of bytes to allocate and placement_params are the parameters supplied to the new expression:
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
void* operator new  (size_t count/*, placement_params*/);
for the new version
void* operator new[](size_t count/*, placement_params*/);
for the new[] version
Распределение функций может быть заменен / перегруженный двумя способами:
Оригинал:
The allocation function can be replaced/overloaded in two ways:
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
'В глобальном масштабе': для того, чтобы называть его, подпись перегруженные функции распределения должны быть видны на место распределения, за исключением неявно объявленные функции распределения по умолчанию. Такое распределение функций будет использоваться для всех ассигнований с соответствующими параметрами в текущей программе
Оригинал:
in the global scope: in order to call it, the signature of the overloaded allocation functions must be visible at the place of allocation, except for implicitly declared default allocation functions. This allocation function will be used for all allocations with corresponding parameters in the current program
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
'В локальной области': перегруженные operator new должны быть статическими общественные функции члена класса. Такое распределение функций будет использоваться только на приобретение данного класса.
Оригинал:
in the local scope: the overloaded operator new must be static public member function of the class. This allocation function will be used only for allocations of that particular class.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Во время компиляции, каждый new выражением смотрит на название соответствующей функции распределения в первую очередь в области видимости класса, и после этого в глобальном масштабе. Это может быть проинструктированы, чтобы пропустить первый шаг по телефону new как ::new. Обратите внимание, что в соответствии с перегрузке правил, любое распределение функций, объявленных в классе сферу скрывает все глобальные функции распределения. Для получения дополнительной информации см. NJ выражение. Отметим, что это не возможно разместить распределение функций в пространстве имен.
Оригинал:
During compilation, each new expression looks up for appropriate allocation function's name firstly in the class scope and after that in the global scope. It can be instructed to skip the first step by calling new as ::new. Note, that as per перегрузке правил, any allocation functions declared in class scope hides all global allocation functions. For more information see NJ выражение. Note, that it is not possible to place allocation function in a namespace.
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Параметры

count -
количество байт для распределения
Оригинал:
number of bytes to allocate
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
ptr -
Указатель на область памяти для инициализации объекта в
Оригинал:
pointer to a memory area to initialize the object at
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

[править] Возвращаемое значение

1-4)
указатель на выделенную область памяти
Оригинал:
pointer to allocated memory area
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

5-6) ptr

[править] Исключения

1-2)
бросает std::bad_alloc о невозможности выделить память
Оригинал:
throws std::bad_alloc on failure to allocate memory
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
3-6)
noexcept-спецификация:  
noexcept
  (начиная с C++11)

[править] См. также

освобождение функций
Оригинал:
deallocation functions
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
получает текущую новый обработчик
Оригинал:
obtains the current new handler
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
регистрирует новый обработчик
Оригинал:
registers a new handler
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция) [edit]
получает неинициализированные хранения
Оригинал:
obtains uninitialized storage
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция)
выделяет память
Оригинал:
allocates memory
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.

(функция)