|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
maytonZ axisпропущено... Нет. Интересный диалог получается. Кстати если ты не заметил - то ты сюда пришёл с вопросом, а сюда понабежали тролли с какой-то чушью типа "invalid pointer value это не значение, а состояние" или "указатель это просто число", вместо того, чтобы на вопрос отвечать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:03 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmaytonНет такого контракта. Хуже того, в операторе delete (и вообще delete) операнд вроде как не обязан быть lvalue. А это тут при чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:05 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Z axisа сюда понабежали тролли с какой-то чушью типа "invalid pointer value это не значение, а состояние" или "указатель это просто число", вместо того, чтобы на вопрос отвечать. Этои есть ответ на вопрос. Из стандарта надо не одну строку выдирать, но и определение понятия на которое она ссылается. Z axisА это тут при чём? При всём. Так любимый тобой стандарт языка запрещает изменять rvalue. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:14 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Предвосхищая безсмысленный не-технический а гуманитарный спор, я считаю нужным закрыть этот топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:16 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Допустим, есть такой код: Код: plaintext 1. 2. 3. 4. 5.
Как известно, при освобождении памяти значения всех указателей меняются: basic.stc/4When the end of the duration of a region of storage is reached, the values of all pointers representing the address of any part of that region of storage become invalid pointer values. Но менять значения константных объектов нельзя (приводит к неопределённому поведению): dcl.type.cv/4Except that any class member declared mutable can be modified, any attempt to modify a const object during its lifetime results in undefined behavior. Получается, строка `delete ptr;` приводит к неопределённому поведению, т.к. (косвенно) меняет значение константного объекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:20 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovZ axisа сюда понабежали тролли с какой-то чушью типа "invalid pointer value это не значение, а состояние" или "указатель это просто число", вместо того, чтобы на вопрос отвечать. Этои есть ответ на вопрос. Из стандарта надо не одну строку выдирать, но и определение понятия на которое она ссылается.Принесёшь определение invalid pointer value не как значения, а как состояния? Dimitry SibiryakovZ axisА это тут при чём? При всём. Так любимый тобой стандарт языка запрещает изменять rvalue.Ты читал цитату из [basic.stc]/4 в первом посте? Там сказано «the values of all pointers». Про аргумент или не аргумент delete ничего не сказано. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 00:20 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Z axisДопустим, есть такой код: Код: plaintext 1. 2. 3. 4. 5.
Как известно, при освобождении памяти значения всех указателей меняются: basic.stc/4When the end of the duration of a region of storage is reached, the values of all pointers representing the address of any part of that region of storage become invalid pointer values. Ты не правильно переводишь. Здесь не говорится об изменении указателей. Z axisНо менять значения константных объектов нельзя (приводит к неопределённому поведению): dcl.type.cv/4Except that any class member declared mutable can be modified, any attempt to modify a const object during its lifetime results in undefined behavior. Получается, строка `delete ptr;` приводит к неопределённому поведению, т.к. (косвенно) меняет значение константного объекта?[/quot]Это тоже не верный перевод. Ты путаешь константу с указателем. В общем, возьми русский вариант спецификации или русский вариант учебника. И не надо переоткрывать закрытые топики. Не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2019, 04:24 |
|
C++17 и константные указатели на динамическую память
|
|||
---|---|---|---|
#18+
Z axisДопустим, есть такой код: Код: plaintext 1. 2. 3. 4. 5.
Этот код вообще-то абсолютно валидный код. Ты можешь создать константный объект и удалить его потом. Если бы это было невозможно, то ты бы не мог создавать константные объекты динамически вообще. Z axisКак известно, при освобождении памяти значения всех указателей меняются: basic.stc/4When the end of the duration of a region of storage is reached, the values of all pointers representing the address of any part of that region of storage become invalid pointer values.Но менять значения константных объектов нельзя (приводит к неопределённому поведению): Это всё к данному случаю не относится. Z axisdcl.type.cv/4Except that any class member declared mutable can be modified, any attempt to modify a const object during its lifetime results in undefined behavior. Получается, строка `delete ptr;` приводит к неопределённому поведению, т.к. (косвенно) меняет значение константного объекта? Тут его нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 10:53 |
|
|
start [/forum/topic.php?fid=57&msg=39878753&tid=2017547]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 268ms |
total: | 402ms |
0 / 0 |