отличия operator new и expression new

266
16 июня 2017, 10:11

В чем разница между operator new и expression new?

Answer 1

В том, что это совершенно разные, хоть и взаимосвязанные, вещи.

New-expression - это встроенная конструкция языка, при помощи которой в языке С++ создаются объекты в динамической памяти. Например

int *p1 = new int();
SomeClass *p2 = new SomeClass[20];

А operator newoperator new[]) - это функции выделения "сырой" неинициализированной памяти, которые неявно вызываются изнутри new-expression. В упрощенной форме алгоритм работы new-expression состоит из двух этапов:

  1. Вызвать функцию выделения "сырой" памяти operator new/operator new[]
  2. Проинициализировать (если необходимо) полученную от operator new "сырую" память - например, путем вызова конструктора(-ов) создаваемого объекта(-ов).

Стандартная библиотека предоставляет некую "базовую" реализацию функций operator new. Эти функции, при необходимости, также являются замещаемыми/перегружаемыми пользователем, в том числе индивидуально для каждого пользовательского класса.

READ ALSO
Односвязный линейный список [требует правки]

Односвязный линейный список [требует правки]

Помогите выполнить задачу:

245
Работа с Unicode в Cython

Работа с Unicode в Cython

Имеется скрипт, написанный на Cython, который принимает на вход массив C++ строк, анализирует их с помощью pymorphy2 и обрабатывает результаты анализаВ...

381
Exteption Throw -> ..WSASocketW(.. - socket_ops.ipp - library boost asio [требует правки]

Exteption Throw -> ..WSASocketW(.. - socket_ops.ipp - library boost asio [требует правки]

Иногда при коннекте вылетает исключение

261
Ошибка при получении данных из item?

Ошибка при получении данных из item?

Добрый день, есть таблица в tabeWidget из её строки пытаюсь получить копию во вторую tabeWidget_2 данной конструкцией

264