Форум программистов, компьютерный форум CyberForum.ru

Избавиться от переполнения буфера (asm) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В матрице 3 х 3 найти max и min значения http://www.cyberforum.ru/cpp-beginners/thread1217271.html
На практике задали 2 задачи по C++ вот сижу вообще не понимаю что, куда хотя пол года назад решал их ) Кому не сложно помогите: 1. В матрице 3 х 3 найти max и min значения. 2. Вводится последовательность слов. Для каждого слова напечатать его характеристику: само слово, количество в нем символов. Печать оформить в виде подпрограммы. В теме должна быть только одна задача!
C++ Заполнить массив размером в 1000 простыми числами Здравствуйте! Нужна помощь в решении двух похожих задач: 1. Найти все простые числа в диапазоне от 2 до 1000 и вывести их на экран. У меня получилось вот что: #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread1217270.html
C++ Можно ли в С++ писать программы с красивым интерфейсом
У меня такой вопрос а вот в с++ нельзя писать красивые программы? тоесть с интерфейсом там чтоб кнопочки потыкать мне это очень важно прошу ответить ЗЫ хочу начать изучение это сложного но сильного языка!:)
C++ Простая графическая библиотека
Доброго времени суток! Мне нужно подключить графическую библиотеку к игре крестики нолики. Всё на простом уровне(нарисовать таблицу,крестик,нолик и т.п.). Какие есть графические библиотеки,которые подойдут в моём случае(хочется попроще, ибо подобного опыта ещё не было) ?
C++ Определить, является ли введенное число степенью тройки, если да - то какой http://www.cyberforum.ru/cpp-beginners/thread1217231.html
#include <stdio.h> #include <conio.h> #include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv) {int n,i,s=3;
C++ Переделать код с Паскаля на С++ Program; uses crt,graph; Type gostinica = record FIO:string; nomer:integer; cena:integer; kolvo:integer; itogo:integer; end; подробнее

Показать сообщение отдельно
Гром
 Аватар для Гром
199 / 118 / 10
Регистрация: 20.03.2009
Сообщений: 1,075
Записей в блоге: 15
26.06.2014, 12:19     Избавиться от переполнения буфера (asm)
Если я все правильно понимаю, то этот код эквивалентен следующему:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
void test();
 
int main()
{
    test();
}
 
void test()
{
    cout << 1 <<" ";
    test();
}
То есть в мейне выполняем тест, внутри теста выполняем тест, внутри теста выполняем тест... В общем, у попа была собака... И так до бесконечности. Точнее, пока стек не закончится.

Сначала мы идем прямым ходом рекурсии, и каждый раз, вызывая внутри теста его же самого заново, мы сохраняем по крайней мере адрес возврата для вновь вызываемого теста, и пока что не собираемся занятую память освобождать. И вот мы берем и берем на стеке память под адресы возврата, вызывая тест снова и снова, пока стек не закончится. Затем наступает коллапс.

А если бы мы вовремя остановились, то выполнив самый глубокий тест, мы бы наконец пошли обратным ходом рекурсии - возвращаясь из вложенных вызовов функции наверх, каждый раз освобождая наконец занятую на стеке память, и в конце концов вернулись бы в мейн, подчистив за собой все, что забирали.

Вообще, непонятно, что конкретно вы хотели сделать. Если просто бесконечно выводить что-то на экран, то можно воспользоваться итерацией вместо рекурсии, то есть циклом (for( ; ; ) {} или while(true) {} ). Хотя тоже не совсем ясно, какая от этого практическая польза.
 
Текущее время: 19:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru