Spec-Zone.ru › GCC 15

7.11 Встроенные функции для выделения и освобождения памяти в C++

GNU C++ предоставляет встроенные функции, эквивалентные вызову ::operator new или ::operator delete с теми же аргументами. Ошибка возникает, если выбранная перегрузка ::operator new или ::operator delete не является заменяемым глобальным оператором. В целях оптимизации вызовы пар этих встроенных функций можно опускать, если обращение к выделенной памяти оптимизируется, если выделение можно заменить буфером в стеке, предоставленным реализацией, или если несколько вызовов выделения памяти можно объединить в один. В C++ такие оптимизации обычно разрешены только для вызовов таких заменяемых глобальных операторов из выражений new и delete.

void foo () {
  int *a = new int;
  delete a; // This pair of allocation/deallocation operators can be omitted
	    // or replaced with int _temp; int *a = &_temp; etc.
  void *b = ::operator new (32);
  ::operator delete (b); // This one cannnot.
  void *c = __builtin_operator_new (32);
  __builtin_operator_delete (c); // This one can.
}

Эти встроенные функции доступны только в C++.

Встроенная функция: void * __builtin_operator_new (std::size_t size, ...)

Это встроенная форма operator new. Она принимает те же формы аргументов, что и «обычная функция выделения памяти», описанная в стандарте C++.

Встроенная функция: void __builtin_operator_delete (void * ptr, ...)

Это встроенная форма operator delete. Она принимает те же формы аргументов, что и «обычная функция освобождения памяти», описанная в стандарте C++.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/New_002fDelete-Builtins.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API