|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.04.2012, 16:01 | #1 |
Пользователь
Регистрация: 13.04.2012
Сообщений: 12
|
Переполнение буфера в функции
Вот код:
Код:
|
17.04.2012, 16:20 | #2 | |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
Цитата:
а если так? Код:
|
|
17.04.2012, 16:25 | #3 | |
Пользователь
Регистрация: 13.04.2012
Сообщений: 12
|
Цитата:
а с другой стороны не хотелось бы впустую выделять байты, если они не будут задействованы... Подскажите, в таком варианте нет подвохов: Код:
Последний раз редактировалось demoniqus; 17.04.2012 в 16:45. |
|
17.04.2012, 16:43 | #4 | |||
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
это рабочий вариант!
Цитата:
Цитата:
Цитата:
Код:
|
|||
17.04.2012, 17:04 | #5 | ||
Пользователь
Регистрация: 13.04.2012
Сообщений: 12
|
Цитата:
Свой вариант немножко перепишу Код:
char schema_str[(sizeof(sch_str) + sizeof(table_str) + sizeof(col_name_str))] = ""; однако и вариант char schema_str[(sizeof(sch_str) + 5)] = ""; работает, хотя количество символов в трех переменных явно больше... И почему в функции getColNumFromTable печатается sizeof = 8? Цитата:
Последний раз редактировалось demoniqus; 17.04.2012 в 17:08. |
||
17.04.2012, 17:22 | #6 | |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
Цитата:
Не совсем. Этот sizeof не мешало бы еще и на количество элементов умножить. В Си это работает, потому что sizeof(char) равен 1 байт, поэтому и sizeof(указатель на строку) вернет длину строки. |
|
17.04.2012, 18:00 | #7 | |
Пользователь
Регистрация: 13.04.2012
Сообщений: 12
|
Вот я это и пытаюсь сделать, да только не понимаю, сколько ж нужно ее выделить...
работает даже так: Код:
Цитата:
Последний раз редактировалось demoniqus; 17.04.2012 в 18:21. |
|
17.04.2012, 18:16 | #8 | |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
Цитата:
Да тут что угодно будет. Бред это! Вы так записываете в память, которая может быть занята в любой момент другим процессом (или даже вашим) и тогда все рухнет! |
|
17.04.2012, 18:29 | #9 | |
Пользователь
Регистрация: 13.04.2012
Сообщений: 12
|
Я просто не стал выкладывать все нежизнеспособные попытки, а так я испробовал в частности все варианты result от 0 до 46...
Цитата:
|
|
17.04.2012, 18:52 | #10 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переполнение | stas45rus | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 11.01.2012 20:54 |
переполнение буфера | goluzov | Общие вопросы C/C++ | 21 | 28.11.2011 09:04 |
Как подменить адрес возврата функции 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 |
Переполнение стека | Ake | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 30.05.2009 22:39 |