Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
DREAMCORP
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
1

Переполнение стека

14.02.2018, 13:14. Просмотров 251. Ответов 6
Метки нет (Все метки)

Доброго времени суток, форумчане!

Начинаю плюсы осваивать, подскажите, безопасен ли код:
C++
1
2
3
4
5
6
7
#include <stdio.h>
int main(int argc, char * argv[]) {
    char array[16];
    fgets(array, 16, stdin);
    printf(array);
    return 0;
}
Как я понимаю, то fgets() не сможет записать больше, чем 16 символов, а значит переполнение невозможно.
Можно ли тут что-то кроме переполнения придумать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2018, 13:14
Ответы с готовыми решениями:

Переполнение стека
Хочу полюбопытствовать. Вычитал недавно, что на стек выделяется ограниченная область памяти, и в...

Переполнение стека
Привет народ. Такой вопрос: Если в общем виде: if (условие) double d else double d почему...

Переполнение стека
Есть функция f(): void f() { //... std::make_pair&lt;size_t, size_t&gt; pairReturner(); //... } ...

Переполнение стека
Всем привет. Помогите, пожалуйста с решением одной проблемы. Мне нужно в программе обрабатывать...

Переполнение стека
Добрый вечер! Я пытался решить следующую задачку: Петя и Вася часто играют в различные...

6
outoftime
║XLR8║
902 / 782 / 238
Регистрация: 25.07.2009
Сообщений: 3,882
Записей в блоге: 5
14.02.2018, 13:23 2
DREAMCORP, строки в Си имеют символ окончания строки '\0' в конце. Нужно 17 char выделить.

Цитата Сообщение от DREAMCORP Посмотреть сообщение
переполнение невозможно
Переполнение стека тут в приципе невозможно. Обращение к памяти за областью массива - UB (undefined behavior) Если вылезешь за облать программы - Segmentation fault. Но уж точно не Stack oveflow!
0
John C Reynolds
3 / 3 / 0
Регистрация: 10.02.2018
Сообщений: 11
14.02.2018, 13:34 3
Цитата Сообщение от DREAMCORP Посмотреть сообщение
Начинаю плюсы осваивать, подскажите, безопасен ли код
Нет.
Цитата Сообщение от DREAMCORP Посмотреть сообщение
Можно ли тут что-то кроме переполнения придумать?
Да. Введи "%s%s%s%s%s%s%s".

Добавлено через 3 минуты
Цитата Сообщение от outoftime Посмотреть сообщение
строки в Си имеют символ окончания строки '\0' в конце. Нужно 17 char выделить.
Не нужно.
2
DREAMCORP
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
14.02.2018, 14:41  [ТС] 4
Цитата Сообщение от outoftime Посмотреть сообщение
Переполнение стека тут в приципе невозможно.
Спасибо! Переполнение буфера имел ввиду. Ошибочка вышла.

Цитата Сообщение от John C Reynolds Посмотреть сообщение
Да. Введи "%s%s%s%s%s%s%s".
Получаю Segmentation fault. Весьма интересно. Почему так?
0
Renji
2550 / 1746 / 524
Регистрация: 05.06.2014
Сообщений: 5,074
14.02.2018, 17:07 5
Цитата Сообщение от DREAMCORP Посмотреть сообщение
Получаю Segmentation fault. Весьма интересно. Почему так?
Первый аргумент printf считается шаблоном показывающим как читать и печатать остальные аргументы. Серия "%s" говорит "там дальше будет пачка строк, ты их распечатай". Но так как пачки строк нет, функция падает пытаясь их найти.
1
COKPOWEHEU
2124 / 1251 / 286
Регистрация: 09.09.2017
Сообщений: 5,086
15.02.2018, 10:24 6
поэтому для вывода строки надо использовать puts(str) или printf("%s", str)
1
DREAMCORP
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
15.02.2018, 14:44  [ТС] 7
Renji, COKPOWEHEU, спасибо!
0
15.02.2018, 14:44
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2018, 14:44

Переполнение стека
Всем добрый вечер. Я создаю вектор, который имеет большой размер: порядка 256000000. Этот вектор...

Рекурсия - переполнение стека
Помогите написать,задание ниже#include &quot;stdafx.h&quot; #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt;...

Реализовать переполнение стека
Помогите пожалуйста: Задали написать программу, где будет переполнение стека ( если съедает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.