Построение объектов в куче - обманчиво простая задача на языке C++. Когда кодМожет ли новый оператор вернуть до завершения строительства?
T* object = new T();
func(object);
называется, это мое понимание того, что память должна быть первой выделена, то инициализируется, и, наконец, конструктор класса называется на нем. Кроме того, виртуальная таблица объекта не обязательно доступна до после завершения строительства.
Мой вопрос: Может ли operator new
вернуть указатель на выделенную/инициализированную память до того, как объект будет построен, так что func(...)
работает на не полностью построенном объекте? Ответ на этот вопрос имеет значение для многопоточной библиотеки, которую я разрабатываю.
Заранее спасибо.
'operator new' * должен * вернуть указатель перед тем, как объект * начнется *. Где он будет построен без указателя? –
Конечно, но я имел в виду нечто похожее на «вернуть указатель и продолжить выполнение в текущей области». Я отредактировал исходное сообщение, чтобы немного разъяснить свой смысл. –
Вы задаете неправильный вопрос. Вам нужно узнать порядок памяти. –