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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
#1

Повторный запуск main() равен перезапуску программы? - C++

30.04.2014, 15:22. Просмотров 2299. Ответов 18
Метки нет (Все метки)

Добрый день. Если в коде какой либо функции я вызову main() c которой у меня начинается выполнение программы, то будет ли это равно перезапуску программы(освобождение всей используемой до этого памяти и т.д) и если нет, то каким образом в коде можно прописать, чтобы программа запустилась заново? С освобождением все занятой до этого памяти и уничтожением всех созданных объектов? Среда разработки VS2012
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2014, 15:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Повторный запуск main() равен перезапуску программы? (C++):

Чтение и запись в файл. Повторный запуск - C++
Имеется структура данных: название института, номер корпуса, название кафедры и телефон кафедры. Требуется: ввести и записать в файл...

повторный прогон программы - C++
Подскажите, пожалуйста, как сделать повторный прогон алгоритмов без запуска программы (хотите начать заново? (y/n)). На примере простейшей...

Запуск программы без создания окна. Запуск фоновой программы - C++
Вопрос, как сделать, чтобы консольное приложение при запуске не создавало окошко консоли. Т.е. запустился процесс, но визуально ничего не...

Повторный ввод без завершения программы - C++
консольное приложение. как сделать так, чтобы при вводе неверных данных в переменную (cin >> a), заново запрашивать ввод данных? без...

Организовать диалог на повторный запукск программы - C++
Я сделал программу,и мне нужно с помощью ФУНКЦИЙ сделать диалог с пользователем например я спрашиваю у него "Хотите ли вы повторить...

Повторный ввод данных без выхода из программы - C++
Здравствуйте! Вот фрагмент кода: while(w1 != 1, w1 != -1){ // веса w1 cout << "Введите весовой коэффицент синапса w1 1 или -1:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 5
Завершенные тесты: 1
30.04.2014, 15:26 #2
Должно быть вам следует смотреть в сторону потоков.
http://www.cplusplus.com/reference/thread/thread/
0
TenGen
Будущее рядом
98 / 96 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 15:27 #3
CyberGenius,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int i = 4;
 
int main()
{
    if ((--i) != 0)
    {
        printf("%i\n", i);
        main();
    }
    return 0;
}
Развлекайтесь
имхо, вам можно просто вызывать из консоли вашу же программу, после чего завершать работу. Но могу ошибаться
либо заведите функцию обнуления всех переменных и в том же экземпляре программы сбрасывайте все значения на стартовые
1
Croessmah
Эксперт CЭксперт С++
13214 / 7485 / 842
Регистрация: 27.09.2012
Сообщений: 18,402
Записей в блоге: 3
Завершенные тесты: 1
30.04.2014, 15:35 #4
Цитата Сообщение от CyberGenius Посмотреть сообщение
Если в коде какой либо функции я вызову main()
3.6 Start and termination
3.6.1 Main function
...
3
The function main shall not be used within a program. The linkage (3.5) of main is implementation-defined. A program that defines main as deleted or that declares main to be inline, static, or constexpr is ill-formed. The name main is not otherwise reserved. [ Example: member functions, classes, and enumerations can be called main, as can entities in other namespaces. — end example ]
так что не надо
0
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 15:57  [ТС] #5
Вообщем, поступил так:
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(1);
}
0
Croessmah
Эксперт CЭксперт С++
13214 / 7485 / 842
Регистрация: 27.09.2012
Сообщений: 18,402
Записей в блоге: 3
Завершенные тесты: 1
30.04.2014, 16:04 #6
Цитата Сообщение от CyberGenius Посмотреть сообщение
exit(1);
уберите эту ересь.
Просто для примера:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdlib>
 
struct TEST
{
   TEST () {
      std::cout << "TEST()" << std::endl ;
   }
   ~TEST () {
      std::cout << "~TEST()" << std::endl ;
   }
} ;
 
int foo ()
{
   exit ( 0 ) ;
}
 
int main ()
{
   TEST t ;
   foo();
}
http://ideone.com/aEAqiB
0
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:07  [ТС] #7
Croessmah, а как тогда лучше поступить?
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.04.2014, 16:53 #8
Цитата Сообщение от CyberGenius Посмотреть сообщение
а как тогда лучше поступить?
а что вам надо?
0
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:56  [ТС] #9
Мне нужно завершить программу и запустить её заново.
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.04.2014, 17:12 #10
Цитата Сообщение от CyberGenius Посмотреть сообщение
Мне нужно завершить программу и запустить её заново.
Для этого должна быть другая программа-менеджер. Не стоит заниматься самозапуском/самозавершением.
С чего вообще возникла необходимость периодического запуска/завершения программы? Может достаточно функции (в новом потоке)?
0
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 17:23  [ТС] #11
Я работаю с библиотекой OpenCV и время от времени она перестает работать как надо, проблема скорей всего с утечками памяти или еще чем то, проблему пока найти не могу. Перезапуск программы решает проблему и является приемлемым решение проблемы на данном этапе.
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.04.2014, 17:54 #12
Цитата Сообщение от CyberGenius Посмотреть сообщение
проблему пока найти не могу
Создайте тему, я думаю, вам помогут. Это лучше, чем искать обходные маневры в виде периодического перезапуска.
Цитата Сообщение от CyberGenius Посмотреть сообщение
является приемлемым решение проблемы на данном этапе
Вы же понимаете, что это в любом случае временное решение. И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
0
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:04  [ТС] #13
Цитата Сообщение от Tulosba Посмотреть сообщение
И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
А чем конкретно плохо такое решение проблемы?
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(0);
}
Обрисую ситуацию, у меня в программе стоит проверка, я знаю наверняка, что в сейчас программа должна получить определенное значение, если она его не получает я понимаю, что возникла проблема и перезапускаю программу.
0
stima
473 / 322 / 30
Регистрация: 22.03.2011
Сообщений: 1,046
Завершенные тесты: 2
30.04.2014, 18:21 #14
У меня в машине сдуло колесо, я знаю, что это колесо, но я покупаю новую машину.
0
TenGen
Будущее рядом
98 / 96 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 18:22 #15
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 18:22
Привет! Вот еще темы с ответами:

Запуск ассемблерного кода на выполнение из main() - C++
Добрый день. Подскажите, если есть готовый файл на ассемблерном коде, то как его можно запустить на выполнение из C++? Взаимодействовать...

Написать int main() для программы - C++
Здравствуйте, есть код класса дерева и массива для кнопок. помогите написать правильно главную функцию. Компилятор жалуется. #include...

Переписать main программы чтения текстовых строк - C++
Переписать main программы чтения текстовых строк и печати самой длиной из них так, чтобы она могла печатать самую длинную строку без каких ...

Функция main. Является ли она точкой старта программы? - C++
Собственно, вопрос уже поднят.. Желательно аргументировать хоть как-то свой ответ, или дать ссылку на интернет ресурс, литературу, где...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.04.2014, 18:22
Ответ Создать тему
Опции темы

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