|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.02.2014, 16:17 | #1 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Здравствуйте.
Код:
Наверное нет, насколько известно в dos'е стек рос в другую сторону? И более важный вопрос: если направление роста адресов может разниться, будут ли корректно работать (на разных системах) алгоритмы работающие с адресами напрямую (+, -, <, >)? Или операторы меняют поведение в зависимости от системы? Думаю я нашел ответ. В <iterator> в описании про std::advance() следующее: Код:
P.s. std::advance не показатель (может сдвигать в обе стороны) Последний раз редактировалось Stilet; 06.02.2014 в 17:29. |
06.02.2014, 17:11 | #2 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
Код:
|
|
06.02.2014, 17:11 | #3 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
куча бреда.
в ДОСе стек рос так же, рост стека вообще от ОС не зависит. операторы не меняют значения, адрес есть число, их и сравнивает. std::advance вообще к этому отношения не причем, да и вывод бред. на интеловской платформе стек всегда растет в одну сторону. а на иных вы врятли будете работать. да и там стек растет так же, и объекты расположены линейно Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
06.02.2014, 17:29 | #4 | ||
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Цитата:
Прежде чем говорить что std::advance бред, попробуйте туда указатель передать (и смежные с ним функции prev, next). Цитата:
Последний раз редактировалось MaTBeu; 06.02.2014 в 17:42. |
||
06.02.2014, 17:42 | #5 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
По поводу std::advance - мне кажется вы неправильно понимаете. Как вы проверяете, что итератор переместился? |
|
06.02.2014, 18:01 | #6 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
а то что вы говорите это потому что стек не имел защиты от переполнения и был по умолчанию в том же сегменте что и код с данными. Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
06.02.2014, 21:33 | #7 | |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Смотрим в стандарт. Раздел 9.2, параграф 13:
Цитата:
|
|
06.02.2014, 22:22 | #8 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
Большое спасибо, это вносит ясность.
Код:
|
07.02.2014, 18:13 | #9 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Это не принципиально. Это трудности компилятора, как он будет разруливать адреса. Вы имеете полное право рассчитывать на то, что: адрес массива всегда совпадает с адресом первого элемента массива. адрес второго массива - это адрес первого + смещение равное sizeof(a[0]) и тд. Каким бы ни был механизм стека, камень процессора и тп, компилятор вам гарантирует четкую определенность следования элементов и их адресов. Структуры: struct example { int a,b; }; Так же являются непрерывными блоками памяти, которые хранят элементы. Структуры можно рассматривать как массивы, способные хранить элементы разных типов. В плане адресации самих элементов - аналогично с массивами: зная адрес начала объекта структуры, и точные типы её членов, вы сможете итерироваться по указателю на данные этих членов. |
|
07.02.2014, 21:59 | #10 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Автоматическое заполнение ячеек в разных системах счисления | viron | Microsoft Office Excel | 3 | 09.01.2012 19:28 |
программа выполнения арифметических операций в разных системах счисления | Iraida555 | Помощь студентам | 2 | 28.12.2011 11:27 |
Рисование в разных системах координат | Marsel737 | Общие вопросы Delphi | 0 | 07.06.2011 19:18 |
Представление чисел в разных системах счисления | Slavytich | Помощь студентам | 2 | 03.04.2011 11:55 |