LINUX.ORG.RU

Читая стандарт C++

 , ,


0

3

Решил я тут ума-разума добавить, пока не поздно, и открыл стандарт C++11 (драфт стандарта).

Параграф 24.2.1 (про итераторы), пункт 5: «Just as a regular pointer to an array guarantees that there is a pointer value pointing past the last element of the array, ...»

Я, наверное, чего-то совсем не понимаю, но как так может быть? Что если массив в самом конце адресного пространства? Не существует тогда «pointer value pointing past the last element», самый старший адрес в пространстве указывает на последний элемент массива.

★★★★★

Есть системы, в которых пользовательское пространство доходит впритык до границы разрядности?

А вообще, не надо докапываться до столба.

tailgunner ★★★★★ ()

Гарантируется, что таких массивов не существует.

5.2 [expr.add], пункт 5:

When an expression that has integral type is added to or subtracted from a pointer, the result has the type of the pointer operand.
<...>
If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Есть системы, в которых пользовательское пространство доходит впритык до границы разрядности?

Например, под линуксом на x86_64 32-битный процесс занимает почти всё своё 32-битное адресное пространство. Последняя страница никем не занята. Предполагаю, что её не занимают как раз потому, что какой-нибудь массив упрётся концом в потолок и потом костей не соберёшь. Та же история с самой первой страницей, где живёт NULL.

const86 ★★★★★ ()
Ответ на: комментарий от tailgunner

докапываться до столба.

До драфта же. Он какбы для обсуждений замечаний предложений. Криокамеру тоже тут никто не отменял.

slackwarrior ★★★★★ ()
Ответ на: комментарий от slackwarrior

До драфта же. Он какбы для обсуждений замечаний предложений.

А ещё он доступен бесплатно, в отличии от финального варианта. Да и разве в прошлом стандарте не то же самое написано?

DarkEld3r ★★★★★ ()
Ответ на: комментарий от DarkEld3r

А ещё он доступен бесплатно

Равно как и финальный вариант (если знать, где искать).

Pavval ★★★★★ ()
Ответ на: комментарий от Pavval

Равно как и финальный вариант (если знать, где искать).

Ну если «знать где и как „искать“», то очень многое будет «бесплатным».

DarkEld3r ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.