Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/32: Рейтинг темы: голосов - 32, средняя оценка - 5.00
CyberGenius
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
1

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

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

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

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

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

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

Запрет на повторный запуск программы
Ничего, работающего на wpf, не нашел. Ну не считая использования мьютекса, где-то в каком-то...

Предотвратить повторный запуск программы
Приветствую Возникла проблема: Если запустить program.exe ещё раз (когда один экземпляр уже...

18
Ilot
Эксперт С++
1850 / 1204 / 346
Регистрация: 16.05.2013
Сообщений: 3,170
Записей в блоге: 5
Завершенные тесты: 1
30.04.2014, 15:26 2
Должно быть вам следует смотреть в сторону потоков.
http://www.cplusplus.com/reference/thread/thread/
0
TenGen
Будущее рядом
101 / 100 / 48
Регистрация: 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
++Ͻ
15950 / 9061 / 1745
Регистрация: 27.09.2012
Сообщений: 22,298
Записей в блоге: 2
Завершенные тесты: 2
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
30.04.2014, 15:35
CyberGenius
1 / 1 / 1
Регистрация: 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
++Ͻ
15950 / 9061 / 1745
Регистрация: 27.09.2012
Сообщений: 22,298
Записей в блоге: 2
Завершенные тесты: 2
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 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:07  [ТС] 7
Croessmah, а как тогда лучше поступить?
0
Jupiter
Каратель
Эксперт С++
6581 / 4002 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.04.2014, 16:53 8
Цитата Сообщение от CyberGenius Посмотреть сообщение
а как тогда лучше поступить?
а что вам надо?
0
CyberGenius
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:56  [ТС] 9
Мне нужно завершить программу и запустить её заново.
0
Tulosba
:)
Эксперт С++
4752 / 3246 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.04.2014, 17:12 10
Цитата Сообщение от CyberGenius Посмотреть сообщение
Мне нужно завершить программу и запустить её заново.
Для этого должна быть другая программа-менеджер. Не стоит заниматься самозапуском/самозавершением.
С чего вообще возникла необходимость периодического запуска/завершения программы? Может достаточно функции (в новом потоке)?
0
CyberGenius
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 17:23  [ТС] 11
Я работаю с библиотекой OpenCV и время от времени она перестает работать как надо, проблема скорей всего с утечками памяти или еще чем то, проблему пока найти не могу. Перезапуск программы решает проблему и является приемлемым решение проблемы на данном этапе.
0
Tulosba
:)
Эксперт С++
4752 / 3246 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.04.2014, 17:54 12
Цитата Сообщение от CyberGenius Посмотреть сообщение
проблему пока найти не могу
Создайте тему, я думаю, вам помогут. Это лучше, чем искать обходные маневры в виде периодического перезапуска.
Цитата Сообщение от CyberGenius Посмотреть сообщение
является приемлемым решение проблемы на данном этапе
Вы же понимаете, что это в любом случае временное решение. И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
0
CyberGenius
1 / 1 / 1
Регистрация: 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
496 / 346 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
30.04.2014, 18:21 14
У меня в машине сдуло колесо, я знаю, что это колесо, но я покупаю новую машину.
0
TenGen
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 18:22 15
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
0
CyberGenius
1 / 1 / 1
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:26  [ТС] 16
Цитата Сообщение от TenGen Посмотреть сообщение
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
Это без сомнений, проблему нужно решать. Но как костыль этот вариант не самый ужасный? И рабочий ли?
0
stima
496 / 346 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
30.04.2014, 18:28 17
Это уже не кастыль, а инвалидная коляска. (c)
1
Qazan
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
30.04.2014, 18:42 18
Может создать .bat файл с инструкциями по дальнейшими действиям
(Убить наш процесс и запустить заново) и запустить его

Проге самой создать файл ,а потом bat самоудалить
0
TenGen
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 19:58 19
CyberGenius, все таки, имхо, лучше либо проблему поправить, либо хотя бы чистить память без завершения приложения. Вы же динамической памятью пользуетесь?
0
30.04.2014, 19:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 19:58

Как запретить повторный запуск программы
При загрузке формы запретить запуск этой формы еще раз , допустим что бы выводило &quot;Это программа...

Повторный запуск программы с функцией plotyy
Здравствуйте! Помогите пожалуйста. Вот часть моей программы: pd2=P2(1,1:razm); pd3=P3(1,1:razm);...

Запуск программы из под main
Доброго времени суток. Есть метод который нужно вызвать из под main, немного парюсь с возвратом,...


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

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

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