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

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

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

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

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

Добрый день. Если в коде какой либо функции я вызову main() c которой у меня начинается выполнение программы, то будет ли это равно перезапуску программы(освобождение всей используемой до этого памяти и т.д) и если нет, то каким образом в коде можно прописать, чтобы программа запустилась заново? С освобождением все занятой до этого памяти и уничтожением всех созданных объектов? Среда разработки VS2012
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.04.2014, 15:22     Повторный запуск main() равен перезапуску программы?
Посмотрите здесь:
C++ Чтение и запись в файл. Повторный запуск
повторный прогон программы C++
Организовать диалог на повторный запукск программы C++
Повторный ввод без завершения программы C++
Повторный ввод данных без выхода из программы C++
Запуск ассемблерного кода на выполнение из main() C++
Написать int main() для программы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
30.04.2014, 15:26     Повторный запуск main() равен перезапуску программы? #2
Должно быть вам следует смотреть в сторону потоков.
http://www.cplusplus.com/reference/thread/thread/
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 15:27     Повторный запуск main() равен перезапуску программы? #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;
}
Развлекайтесь
имхо, вам можно просто вызывать из консоли вашу же программу, после чего завершать работу. Но могу ошибаться
либо заведите функцию обнуления всех переменных и в том же экземпляре программы сбрасывайте все значения на стартовые
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,050
Записей в блоге: 3
Завершенные тесты: 1
30.04.2014, 15:35     Повторный запуск main() равен перезапуску программы? #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 ]
так что не надо
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 15:57  [ТС]     Повторный запуск main() равен перезапуску программы? #5
Вообщем, поступил так:
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(1);
}
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,050
Записей в блоге: 3
Завершенные тесты: 1
30.04.2014, 16:04     Повторный запуск main() равен перезапуску программы? #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
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:07  [ТС]     Повторный запуск main() равен перезапуску программы? #7
Croessmah, а как тогда лучше поступить?
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.04.2014, 16:53     Повторный запуск main() равен перезапуску программы? #8
Цитата Сообщение от CyberGenius Посмотреть сообщение
а как тогда лучше поступить?
а что вам надо?
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 16:56  [ТС]     Повторный запуск main() равен перезапуску программы? #9
Мне нужно завершить программу и запустить её заново.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.04.2014, 17:12     Повторный запуск main() равен перезапуску программы? #10
Цитата Сообщение от CyberGenius Посмотреть сообщение
Мне нужно завершить программу и запустить её заново.
Для этого должна быть другая программа-менеджер. Не стоит заниматься самозапуском/самозавершением.
С чего вообще возникла необходимость периодического запуска/завершения программы? Может достаточно функции (в новом потоке)?
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 17:23  [ТС]     Повторный запуск main() равен перезапуску программы? #11
Я работаю с библиотекой OpenCV и время от времени она перестает работать как надо, проблема скорей всего с утечками памяти или еще чем то, проблему пока найти не могу. Перезапуск программы решает проблему и является приемлемым решение проблемы на данном этапе.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
30.04.2014, 17:54     Повторный запуск main() равен перезапуску программы? #12
Цитата Сообщение от CyberGenius Посмотреть сообщение
проблему пока найти не могу
Создайте тему, я думаю, вам помогут. Это лучше, чем искать обходные маневры в виде периодического перезапуска.
Цитата Сообщение от CyberGenius Посмотреть сообщение
является приемлемым решение проблемы на данном этапе
Вы же понимаете, что это в любом случае временное решение. И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:04  [ТС]     Повторный запуск main() равен перезапуску программы? #13
Цитата Сообщение от Tulosba Посмотреть сообщение
И как я уже писал ранее, в таком случае следует создать новую программу, которая будет управлять запуском/перезапуском.
А чем конкретно плохо такое решение проблемы?
C++
1
2
3
4
void _Restart(){
    WinExec("D:\\MP0002.exe", SW_SHOWMINIMIZED);
    exit(0);
}
Обрисую ситуацию, у меня в программе стоит проверка, я знаю наверняка, что в сейчас программа должна получить определенное значение, если она его не получает я понимаю, что возникла проблема и перезапускаю программу.
stima
455 / 304 / 23
Регистрация: 22.03.2011
Сообщений: 990
Завершенные тесты: 2
30.04.2014, 18:21     Повторный запуск main() равен перезапуску программы? #14
У меня в машине сдуло колесо, я знаю, что это колесо, но я покупаю новую машину.
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 18:22     Повторный запуск main() равен перезапуску программы? #15
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
CyberGenius
1 / 1 / 0
Регистрация: 23.08.2012
Сообщений: 100
30.04.2014, 18:26  [ТС]     Повторный запуск main() равен перезапуску программы? #16
Цитата Сообщение от TenGen Посмотреть сообщение
CyberGenius, потому что лучше от ошибки избавиться, а не избавляться от последствий
Это без сомнений, проблему нужно решать. Но как костыль этот вариант не самый ужасный? И рабочий ли?
stima
455 / 304 / 23
Регистрация: 22.03.2011
Сообщений: 990
Завершенные тесты: 2
30.04.2014, 18:28     Повторный запуск main() равен перезапуску программы? #17
Это уже не кастыль, а инвалидная коляска. (c)
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 797
Записей в блоге: 10
30.04.2014, 18:42     Повторный запуск main() равен перезапуску программы? #18
Может создать .bat файл с инструкциями по дальнейшими действиям
(Убить наш процесс и запустить заново) и запустить его

Проге самой создать файл ,а потом bat самоудалить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2014, 19:58     Повторный запуск main() равен перезапуску программы?
Еще ссылки по теме:
C++ Переписать main программы чтения текстовых строк
Функция main. Является ли она точкой старта программы? C++
Настройка размера окна при открытии программы (main(), не WinMain() C++
int main() и его return(узнать код завершения программы в cmd) C++
Какой новые синтаксис: int main() VS. void main() C++

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

Или воспользуйтесь поиском по форуму:
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
30.04.2014, 19:58     Повторный запуск main() равен перезапуску программы? #19
CyberGenius, все таки, имхо, лучше либо проблему поправить, либо хотя бы чистить память без завершения приложения. Вы же динамической памятью пользуетесь?
Yandex
Объявления
30.04.2014, 19:58     Повторный запуск main() равен перезапуску программы?
Ответ Создать тему
Опции темы

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