Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 00:03   #11
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Пепел Феникса
Цитата:
иных мыслей у меня нет.
да дебаг у него просто включен, че тут проверять
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 04.04.2012, 00:19   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может, не знаю.

просто как бы то ни было хочеться на это посмотреть.

если это при дебаге, то говорить не о чем вообще.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.04.2012, 00:33   #13
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

У автора Visual Studio.
Я проверил на VS 2003 - 2010.
И в debug и в release поставил опцию /Zp4
Код:
char x1;
char x2;
std::cout << (int)&x2 - (int)&x1;
В релизе, как и положено - один байт разницы.
В дебаге разница в 12 байт, причем с другим знаком. )
Из чего я сделал вывод, выравнивание не при чем, а возможно пишется дебажная инфа.
EUGY вне форума Ответить с цитированием
Старый 04.04.2012, 01:29   #14
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2EUGY
Цитата:
причем с другим знаком
тоже ничего удивительного. стек то растет от старших к младшим у нас
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 04.04.2012, 14:08   #15
Taler
Новичок
Джуниор
 
Регистрация: 03.04.2012
Сообщений: 3
По умолчанию

У меня VS8, Експресс выпуск. В первом случае компиляция происходила в debug, а сейчас я попробовал в release (правда, как поставить опцию /Zp4 я так и не разобрался).У меня получилось так:

Цитата:
Адрес а: 0012FF74
Адрес b: 0012FF70
Адрес с: 0012FF6C
разница уже не в 12, а в 4 байта. Ну, точнее в 2, т.к. первые два байта занимают сами переменные. Уже лучше, но всё-ровно не понятно - зачем разрыв в 2 байта? И в чём разница компиляции в debug и release?

К тому же полазал в сети, почитал: что такое адресное пространство. И не могу понять, почему, если каждая программа "считает" что она монопольно владеет всей, гипотетически возможной оперативной памятью, то почему индексация начинается не с нулевого адреса, а не понятно откуда? То, что самые первые 64Кб заняты изначально я понял. Но тогда адресация должна начинаться с 0000FFFF или наоборот с самого конца. А она начинается откуда-то с середины, и растет от старших к младшим. Никак не могу понять логику такой работы.

На счёт выравнивания тоже кое-что почитал. И хотя в полной мере ещё не понял что там к чему, но везде говорится о выравнивании структур, а не об отдельных переменных.
Taler вне форума Ответить с цитированием
Старый 04.04.2012, 15:18   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
На счёт выравнивания тоже кое-что почитал. И хотя в полной мере ещё не понял что там к чему, но везде говорится о выравнивании структур, а не об отдельных переменных.
переменные тоже выравниваются.
Цитата:
Но тогда адресация должна начинаться с 0000FFFF или наоборот с самого конца. А она начинается откуда-то с середины, и растет от старших к младшим. Никак не могу понять логику такой работы.
это стек растет от старших к младшим. он так и должен.
вообще помните что в вашем пространстве есть еще исполняемые модули, как минимум kernel32.dll и куча разных областей памяти(стек, куча, etc)
Цитата:
то почему индексация начинается не с нулевого адреса, а не понятно откуда?
нулевые адреса оставленны для выявления нулевых адресов.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение кода Access из Excel Konstantin1970 Microsoft Office Access 3 13.02.2012 12:02
Выполнение PHP кода Sprat PHP 1 31.01.2012 15:12
Парсер, выполнение кода. zumm Общие вопросы Delphi 27 30.06.2010 13:29
.htaccess запрет на выполнение кода wall66 PHP 3 11.08.2009 10:54
Выполнение кода из файла.. NSvirus Паскаль, Turbo Pascal, PascalABC.NET 25 14.06.2009 00:56