|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.11.2011, 05:19 | #1 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
переполнение буфера
имеется две переменые
char buffer_one[8] char buffer_two[8] адреса их такие 0xbffff7f0 0xbffff7f8 записываем в buffer_one 12345678 выводим printf buffer_one, выводит 12345678. НО как она функция printf находит конец строки? нулевой байт? но тогда нулевой байт будет находится во второй переменной |
27.11.2011, 06:39 | #2 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Цитата:
Со мной можно встретиться на www.clipper.borda.ru
|
|
27.11.2011, 08:11 | #3 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
получается что если выделить 8 байт и записать 8 байт..... то на самом деле записывается 9 байт? 9-ый байт - нулл байт...
|
27.11.2011, 08:32 | #4 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Из моего ответа это не слеудет. Это ваши фантазии. Перечитайте мой предыдущий ответ еще раз. Там все ясно сказано.
Со мной можно встретиться на www.clipper.borda.ru
|
27.11.2011, 09:02 | #5 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
это локальные
в след адресе было значение 123 после записи 8 байт. 9 байт нулл байт, записался в след переменую. и там стало не 123 а 0x00 23 Последний раз редактировалось Stilet; 27.11.2011 в 12:18. |
27.11.2011, 10:00 | #6 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Еще раз повторяю: не фантазируйте! При записи 8 байт может записаться только 8 байт! Значит вы просто делаете то, что сами не понимаете!
Со мной можно встретиться на www.clipper.borda.ru
|
27.11.2011, 10:10 | #7 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
Код:
Последний раз редактировалось Stilet; 27.11.2011 в 12:18. |
27.11.2011, 10:13 | #8 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Ну, и ткните пальцем, где вы записываете 8 байт?!!! Очень любопытно!
Со мной можно встретиться на www.clipper.borda.ru
|
27.11.2011, 11:30 | #9 |
Форумчанин
Регистрация: 26.06.2010
Сообщений: 168
|
strcpy( string2, "12345678" );
|
27.11.2011, 12:35 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Переполнения не будет. Все потому что строки хранятся не в стеке, а в динамической памяти (имею ввиду их тела). И резервируется под них на один байт больше. Вот смотри в отладчике - там нулевой символ всетки дописывается самим компилятором
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets | dmitrii6120 | Помощь студентам | 6 | 14.11.2011 20:10 |
переполнение буфера | Dimarik | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 13.07.2011 02:24 |
Арифметическое переполнение | hasana | Помощь студентам | 2 | 04.11.2010 18:08 |
Переполнение деления!!! | zero-cool | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 28.09.2010 21:10 |
Переполнение Стека | Викдон | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 19.12.2008 19:16 |