![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Hoo |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 23.7.2006 Репутация: нет Всего: 1 |
привет
почему если я выделяю память всего для одного символа при вводе больших не возникает ошибки?
|
||||
|
|||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
а почему должна? Тут неопределенное поведение, в том числе и отсутствие всяких ошибок возможно. Просто ты этими лишними в данном случае ничего важного не портишь. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
Hoo, а ты попробуй релизную версию проект собрать
|
|||
|
||||
| Hoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 23.7.2006 Репутация: нет Всего: 1 |
спасибо
chaos, чего-то тоже самое, компилятор MinGW тоесть если я выделяю память в один байт, то все остальные остаются помеченными в системе как свободные? и значит в любое время буквы начиная со второй могут неожиданно измениться? а если str указывает на первый блок, а второй занят, то куда запишется вторая буква? Если например третий свободен, то в него? и значение какого блока я получаю вызывая str[1], второго или третьего? и как правильно сохранять введенную строку на C, если заранее не известен ее размер? так?
Это сообщение отредактировал(а) Hoo - 2.3.2007, 08:45 |
|||
|
||||
| Fazil6 |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
испортит следующий. Блоки памяти массивов непрерывные. Когда ты выходишь за границы, ты пишешь подряд. Добавлено @ 10:15
gets для этого не подходит. Нужно использовать fgets
|
||||||
|
|||||||
| Hoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 23.7.2006 Репутация: нет Всего: 1 |
Fazil6, спасибо, но мне заранее не известен размер строки, как это лучше всего сделать?
|
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
выделяй достаточно большой буфер. |
|||
|
||||
| seacat79 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
|
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
seacat79, это на каком языке?
|
|||
|
||||
| Hoo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 23.7.2006 Репутация: нет Всего: 1 |
так и сделаю
seacat79, я на C99 |
|||
|
||||
| seacat79 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
По просьбам трудящихся
|
|||
|
||||
| 0lmer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 3.12.2006 Репутация: нет Всего: -1 |
256 символов под строку вполне хватает, если это не длиииииииинный путь до файла.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |