Информация об изменениях

Сообщение Re[2]: new vs. malloc от 24.04.2018 5:56

Изменено 24.04.2018 6:18 σ

Re[2]: new vs. malloc
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, _NN_, Вы писали:


_NN>>Кто знает, почему стандарт не требует возвращать указатель на не перекрывающиеся данные в 'new' в отличии от malloc ?


X>возможно потому, что new можно перегрузить так, чтоб он возвращал что угодно, а не только уникальный адрес...


Низя
http://eel.is/c++draft/basic.stc.dynamic.allocation#2.sentence-6 :
> If the request succeeds, the value returned by a replaceable allocation function is a non-null pointer value ([conv.ptr]) p0 different from any previously returned value p1, unless that value p1 was subsequently passed to a replaceable deallocation function.

При этом
http://eel.is/c++draft/basic.stc.dynamic.allocation#2.sentence-7 :
> Furthermore, for the library allocation functions in [new.delete.single] and [new.delete.array], p0 represents the address of a block of storage disjoint from the storage for any other object accessible to the caller.

Т.е. НЕ-library функции могут возвращать, например, указатель на элемент видимого всем глобально массива.
Re[2]: new vs. malloc
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, _NN_, Вы писали:


_NN>>Кто знает, почему стандарт не требует возвращать указатель на не перекрывающиеся данные в 'new' в отличии от malloc ?


X>возможно потому, что new можно перегрузить так, чтоб он возвращал что угодно, а не только уникальный адрес...


Низя
http://eel.is/c++draft/basic.stc.dynamic.allocation#2.sentence-6 :
> If the request succeeds, the value returned by a replaceable allocation function is a non-null pointer value ([conv.ptr]) p0 different from any previously returned value p1, unless that value p1 was subsequently passed to a replaceable deallocation function.

При этом
http://eel.is/c++draft/basic.stc.dynamic.allocation#2.sentence-7 :
> Furthermore, for the library allocation functions in [new.delete.single] and [new.delete.array], p0 represents the address of a block of storage disjoint from the storage for any other object accessible to the caller.

Т.е. НЕ-library функции могут возвращать, например, указатель на элемент видимого всем глобального массива.