![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
10 раз откомпилил, 10 повезло. Вот она удача ->
![]() -------------------- |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
тебе повезло что программа не вылетела с access violation при попытке записи за границы массива....
-------------------- СУВ, Partizan. |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
JAnty,
Запусти прогу не из IDE, а из проводника. Думаю, что теперь увидишь разницу (скорее всего, ты еще и debug версию компилишь) -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
a[2]='\0'; все правильно ![]() Dov я не хулиганю эта обьявление правильное на мой взгляд
чему равна длина этого массива? Только не надо говорить про плохие компиляторы Это сообщение отредактировал(а) apook - 29.3.2007, 17:51 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
выход за границы массива. ты имеешь доступ к a[0] и a[1]. У тебя размер - 2 элемента, а не 3. |
|||
|
||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
char a[2];
a[0]='a'; a[1]='q'; a[2]='w'; a[3]='e'; a[4]='t'; Forma->Caption=a;
Пожилание учол, откомпилил финальную в ехе и запустил на другом компе, и всё mrOk; ![]() -------------------- |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
ггг ) попробуй текст в 10 Мбайт дозаписать) может тогда наконец вылетит)
-------------------- СУВ, Partizan. |
|||
|
||||
vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
везение и больше ничего, даже скорее невезение, потомучто когданить из-за этого на такую проблему можешь попасть.. почитай про устройство памяти и про определение переменных и про то как все это хранится, и nujulf поймешь в чем ты неправ
так тут как раз два элемента будет \0 и \0. \ - экранирующий символ что правильно, то что ты обьявил массив из 2 элементов, а обращаешься к третьему? |
||||
|
|||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Я же не собираюсь так и понатуре делать, память просто терпит, винда допускает оплошности, но суть бредовая, согласен. По сути дело оно как, в памяти пишутся символы по порядку и потом \0 . потом читаем до \0, в указателе мы же не указываем длинну, а a[2]='\0' запишет символ \0 после символа a[1] в памяти. ![]() -------------------- |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
но так не должно позволять делать! хм.. у меня подозрение что здесь замешан борланд.. Добавлено через 2 минуты и 16 секунд ![]() ![]() |
|||
|
||||
apook |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
char str[ 2 ]="\0"; что здесь опасного просто строка длинной 0, зачем экранирование экранируется '\n'
но он же там будет но кстати плохо однако он затереться может (а может и нет ![]() -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
||||
|
|||||
JAnty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Там так называемая "защита от дурака" Именно так делается изменение массивов и т.д. в стандартных библиотеках. А теперь это доступно пользователю в ручную. Превратим a[2] в a[3];
С этим надо быть осторожным. А лучше преобразовывать стандартными методами, которые делаются именно таким способом, но которые проверены годами и стандартом С. ИМХО Добавлено через 5 минут и 35 секунд Шалости с ОЗУ. ![]() Это сообщение отредактировал(а) JAnty - 29.3.2007, 18:46 -------------------- |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
а если сразу после массива идет нужная информация?? например другая строка, к чему тогда такие шалости могут привести? это какими это? лучше динамически выделять, и не иметь проблем с памятью.. |
|||
|
||||
JAnty |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 6.12.2004 Где: Москва Репутация: 1 Всего: 2 |
Тогда разумеется это чревато полным пипецом. ![]() Добавлено через 7 минут и 59 секунд
А тогда кагже работает указатель на строку, адрес не меняется, но строка растёт? а? -------------------- |
||||
|
|||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Это сообщение отредактировал(а) apook - 29.3.2007, 20:02 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |