![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
HMLd |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 27.6.2006 Где: Polska Репутация: 1 Всего: 0 |
При объявлении константы типа
и объявлении массива
программа компилируется нормально, но при выполнении виснет. При отладке по шагам выдаёт ошибку на первой же строке программы. Фишка в том, что если задать значение данной константы равное 4 294 967 295 - т.е. максимальное значение long - всё работает на ура...Теряюсь в догадках. Компилятор - Borland c++ 5.02 (При использование const всё так же). Может - борландовский глюк? |
||||
|
|||||
ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 1 Всего: 14 |
Если sizeof(int)=4, то получается где-то, 15 Гбайт памяти. Компилятор должен выдать ошибку, что размер массива слишком большой. Да и у тебя, кроме того, будет stack overflow.
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
chich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 20.6.2006 Репутация: нет Всего: нет |
может у него оперативки много
![]() и вообще для выделения больших массивов (но не таких как этот) помоему лучше пользоваться new и delete |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
на 32-ой архитектуре виртуальное адресное пространство составляет обычно 4Gb (физической памяти итого меньше) а ты хочешь выделить ~ 15Gb, да еще и в стеке, не круто ли? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
HMLd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 27.6.2006 Где: Polska Репутация: 1 Всего: 0 |
Точно....Всё, спасибо. Разобрался... ![]() |
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
..получилось? -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
...
И почему макрос обозвали константой? |
|||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
||||
|
||||
DeadSoul |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Переполнение стека обычно бывает от другого -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
586 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
||||
|
||||
HMLd |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 27.6.2006 Где: Polska Репутация: 1 Всего: 0 |
Мне кажется, что в данном контексте строки
и
идентичны. Разве нет?...
фрейм - ![]() |
||||||||
|
|||||||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
HMLd Константа хранится в памяти и даже тип имеет, а макрос - автозамена данного выражение на другое во время компиляции.
Это сообщение отредактировал(а) XenonSk - 30.6.2006, 00:35 |
|||
|
||||
HMLd |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 67 Регистрация: 27.6.2006 Где: Polska Репутация: 1 Всего: 0 |
Это ясно, и я это не оспариваю, просто в вышеприведённом коде работа и смысл программы не изменится, если вместо const писать #define. В другом контексте это может и играть роль... ![]() |
|||
|
||||
586 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Фрейм - это выделенный участок памяти в стеке. Вот пример:
Диззасемблированный код:
Это сообщение отредактировал(а) 586 - 30.6.2006, 02:37 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |