170 похожих чатов

Подскажите, верны ли мои суждения. По стандарту, объект завершает время

своей жизни при переиспользовании занимаемого им хранилища. Так как определения переиспользования в стандарте нет, положим, что это означает создать (create) объект в этом хранилище. По стандарту, объект неявно создаваемого типа также создаётся неявно в результате вызова функции operator new, которая имеет размещающую форму, которая ничего не делает. Таким образом, функция, не производящая действий, может окончить время жизни объекта?
Прав ли я, и если не прав, то где?

17 ответов

7 просмотров

По стандарту, объект завершает время своей жизни при переиспользовании занимаемого им хранилища. А можно ссылку?

Артём Колпаков
http://eel.is/c++draft/basic.memobj#basic.life-1.5

Ну это же не единственный вариант

Артём-Колпаков Автор вопроса
Danya🔥
Ну это же не единственный вариант

Но факт переиспользования хранилища всё-таки есть из цепочки рассуждений

объект неявно создаваемого типа Что за объект такой?

Ты как-то всё очень сложно объясняешь

По стандарту, объект неявно создаваемого типа также создаётся неявно в результате вызова функции operator new, которая имеет размещающую форму, которая ничего не делает. Пример кода можно?

Артём Колпаков
https://godbolt.org/z/vde8bW

Ну по сути по стандарту да, да и по логике тоже Кстати, окончание lifetime связано как-то с вызовом деструктора?

Завершит он после окончания работы деструктора, который при placement new ты обязан явно вызвать. То есть в этом случае время жизни объекта задаётся руками программистом. Про твои рассуждения я не понял. Ты явно вызываешь placement new - и объект начал свою жизнь. Ты явно вызываешь деструктор - жизнь объекта закончена. Вроде бы все прозрачно.

Артём-Колпаков Автор вопроса
Ilya Zviagin
Завершит он после окончания работы деструктора, ко...

Стандарт разрешает не вызывать деструктор

Артём-Колпаков Автор вопроса
Ilya Zviagin
Чего?

For an object of a class type, the program is not required to call the destructor explicitly before the storage which the object occupies is reused or released; however, if there is no explicit call to the destructor or if a delete-expression ([expr.delete]) is not used to release the storage, the destructor is not implicitly called and any program that depends on the side effects produced by the destructor has undefined behavior

Артём Колпаков
Стандарт разрешает не вызывать деструктор

А что тебя то заставляет не вызывать деструктор?

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Где можно найти примеры эффективного "асинхронного" tcp сервера на C? Я видел select, kqueue, poll, epoll и т.д. Ввод-вывод неблокирующий, но обработка клиентов блокирующая
#
10
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us 👉We offer Interview Support :-for a low cost variety of tech...
Rambabu Nallamilli
3
Hello experts, Could someone kindly tell me how to run vacuum inside a plpgsql function? If you have any link please share. Thank you
Amol Palav
10
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
7
Карта сайта