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

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

Войти
Регистрация
Восстановить пароль
 
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
#1

При запуске прогаммы из папки Release вылетает - C++

06.11.2011, 17:26. Просмотров 995. Ответов 11
Метки нет (Все метки)

Есть программа написанная мной(500 строк)
Если запускаю дебаг, все работает так как надо
Если запускаю реалайз, все работает как надо
Но если зайты в папку реалайз то программа работает почти до конца, но вылытает

Наверно это связанно с настройками VS10? Если да то как исправить?

Добавлено через 4 часа 50 минут
up проблема все интересна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 17:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При запуске прогаммы из папки Release вылетает (C++):

Как в Visual Studio задать имя файла при запуске Release через Ctrl + F5? - C++
Я переименовал выходной файл в режиме Release в свойствах Linker->General->Output, но при попытки из студии как обычно запустить...

При запуске вылетает,а почему? - C++
#include <iostream> using namespace std; const int MAX=100; //ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ â èìåíè class emloyee { long...

Программа вылетает при запуске - C++
День всем добрый! Я недавно заметил такую особенность. Если размещать файл программы по директории, содержащей русские символы,...

При запуске программы вылетает Dev-C++ - C++
Здравствуйте! Хотел я сделать программу которая. Просит на вход несколько данных. А на выходе выдает учеников школы 50 набравших...

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

Вылетает ошибка при запуске программы - C++
Написал несложную программу сложения матриц. Скомпилирывал все нормально, ошибок нема. Начинаюца проблемы когда жму "Выполнить" програма...

11
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
06.11.2011, 17:29 #2
с какой ошибкой вылетает?
и правильно говорить "рилиз")
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
06.11.2011, 17:49  [ТС] #3
Так выглядет на одном компьютере
При запуске прогаммы из папки Release вылетает
а на другом просто пишет что возникшее проблемы привели к прекращению работы программы
0
Kastaneda
Jesus loves me
Эксперт С++
4717 / 2921 / 242
Регистрация: 12.12.2009
Сообщений: 7,434
Записей в блоге: 2
Завершенные тесты: 1
06.11.2011, 17:56 #4
Я бы посмотрел ассемблерный код и посмотрел бы, что там за инструкция. Навскидку могу сказать, что это либо выход за пределы выделенной памяти, либо попытка чтения памяти, которая была выделена под функцию, но функция уже отработала, либо что-нибудь в этом роде.
Можешь весь свой код выложить.

Добавлено через 1 минуту
да, кстати, можешь нажать "отмена", должно что-то информативное открыться, например будет указана строчка кода, которая создает эту ошибку.
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
06.11.2011, 17:57 #5
ошибка в коде программы.
попытка записи туда, куда не следует, вероятно.
0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
06.11.2011, 18:01  [ТС] #6
вот кусочки кода( примерно там момент вылета)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include "head.h"
int main(int argc, char* argv[])
{
 
    setlocale(LC_CTYPE, ""); //русский текст
    cout<<"Чтение из файла\n";
    FILE *Fin;
    int r;
    if((Fin=fopen(file_in, "r+"))!=NULL)
    {
        
        while(r = fgets(buff,255,Fin)>0)
        {
            try
            {
                // сдесь набор функций( но в них не вылетает)
                obr4();
                cout<<"Последныя удаление одинаковых ссылок\n";
                obr5();
                cout<<"И еще раз\n";
                obr6();
                zapis=true;
                while(zapis)
                {
                    cout<<"Запись в файл\n";
                    if(zap_v_file())
                        zapis=false;
                    else
                    {
                        cout<<"Запись в файл не удачна.Проверте, существует ли файл "<<file_out<<" и не занет ли он другим процессом.После проверки нажмоте любою кнопку, затем Enter\n";
                        cin>>buff;
                    }
                }
            }
            catch(...)
            {
                cout<<"Ошибка";
            }
 
        }
    }
    else
    {
        cout<<"Не удалось открыть файл "<<file_in;
        cin>>buff;
    }
    cout<<"Все!!!\a";
    cin>>buff;
 
 
 
    return 0;
}
// здесь функции
// best - это вектор строк
bool obr5()
{
    int end=best.size()-2;
    for(int i=0;i<end;i++)
    {
        try
        {       
            if(best.at(i)==best.at(i+1) || best.at(i)==best.at(i+2))
                best.erase(best.begin()+i--);
        }
        catch(...)
        {
            cout<<"Ошибка в этой ссылке\n";
        }
 
    }
    return 1;
}
 
// мне кажется что вылетает в этой функции , поэтому так много блоков try
bool obr6()
{
    try
    {
        int end=best.size()-1;
        for(int i=0;i<end;i++)
        {
            try
            {   
                int na[3];
                string tmp0;
                string tmp1;
                string tmp2;
                na[0]=best.at(i).rfind("http://");
                na[1]=best.at(i+1).rfind("http://");
                na[2]=best.at(i+2).rfind("http://");
 
                    tmp0=best.at(i+0).substr(na[0]);
                    tmp1=best.at(i+1).substr(na[1]);
                    tmp2=best.at(i+2).substr(na[2]);
            
                if(tmp0==tmp1 || tmp0==tmp2)
                    best.erase(best.begin()+i--);
 
 
            
            }
            catch(...)
            {
                cout<<"Ошибка в этой ссылке\n";
            }
 
 
        }
        try
        {
            best.erase(best.end()-1);
        }
        catch(...)
        {
            cout<<"Ошибка удаления последней ссылки\n";
        }
        return 1;
    }
    catch(...)
    {
        return 0;
    }
}
    
 
bool zap_v_file()
{
    try
    {
        FILE *output;
        char kon_str[2];
        strcpy(kon_str,"\n");
    
        if((output=fopen(file_out, "a+t"))==NULL)
           return 0;
        for(int i=0;i<best.size();i++)
        {
            fputs(best.at(i).c_str(), output);
            fputs(kon_str, output);
        }
        fclose(output);
        best.clear();
        return 1;
    }
    catch(...)
    {
        return 0;
    }
}
0
Kastaneda
Jesus loves me
Эксперт С++
4717 / 2921 / 242
Регистрация: 12.12.2009
Сообщений: 7,434
Записей в блоге: 2
Завершенные тесты: 1
06.11.2011, 18:05 #7
Ну так вот оно:
Цитата Сообщение от ЛеЖиК) Посмотреть сообщение
C++
1
2
na[1]=best.at(i+1).rfind("http://"); 
na[2]=best.at(i+2).rfind("http://");
когда i=end-1 происходит выход за пределы строки(или что там у тебя)

Добавлено через 1 минуту
и здесь тоже
C++
1
if(best.at(i)==best.at(i+1) || best.at(i)==best.at(i+2))
1
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
06.11.2011, 18:08  [ТС] #8
Цитата Сообщение от Kastaneda Посмотреть сообщение

Добавлено через 1 минуту
да, кстати, можешь нажать "отмена", должно что-то информативное открыться, например будет указана строчка кода, которая создает эту ошибку.
Когда я запускаю из студии то ошибка не появляется, а когда кликаю на exe шник то она появляется.

когда нажимаю отмена меня посылает в файл free.c
на строчки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __cdecl _free_base (void * pBlock)
{
 
        int retval = 0;
 
 
        if (pBlock == NULL)
            return;
 
        RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));
 
        retval = HeapFree(_crtheap, 0, pBlock);
        if (retval == 0)
        {
            errno = _get_errno_from_oserr(GetLastError());
        }
}
0
Kastaneda
Jesus loves me
Эксперт С++
4717 / 2921 / 242
Регистрация: 12.12.2009
Сообщений: 7,434
Записей в блоге: 2
Завершенные тесты: 1
06.11.2011, 18:11 #9
здесь кстати выкидывается исключение, которое выкидывает at()
C++
1
2
3
4
5
6
7
8
9
 try
                {               
                        if(best.at(i)==best.at(i+1) || best.at(i)==best.at(i+2))
                                best.erase(best.begin()+i--);
                }
                catch(...)
                {
                        cout<<"Ошибка в этой ссылке\n";
                }
ну и во втором случае тоже.
1
Mиxaил
06.11.2011, 18:12
  #10

Не по теме:

Цитата Сообщение от OstapBender Посмотреть сообщение
и правильно говорить "рилиз")
елиз" правильно будет

0
ЛеЖиК)
157 / 60 / 1
Регистрация: 29.04.2011
Сообщений: 642
06.11.2011, 18:13  [ТС] #11
если выкидывает это исключение она это пишет, и продолжает работать
а моем случае вылетает
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
06.11.2011, 18:37 #12
Mиxaил, какая разница ? оО
0
06.11.2011, 18:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 18:37
Привет! Вот еще темы с ответами:

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

MinGW. При запуске откомпилированной программы вылетает ошибка, что библиотека libgcc_s_dw2-1.dll отсутствует. - C++
Решил освоить этот компилятор, поставил под windows. Пишу банальный хелло ворлд. Пробую скомпилировать g++ test.cpp - o test При...

Borland c 5.02 при запуске по шагам (F8) вылетает окошко CPU c кодом АСМ как его убрать? - C++
День добрый. Кто знает подскажите пожалуйста в Borland C++ 5.02 при пошаговом запуске программы выдает окошко CPU с асемблерным кодом как...

Состояние данных приложения в оперативке при резком отключении прогаммы - C++
Это если коротко. День всем добрый! Ко мне тут вопрос явился... К примеру, у меня есть такой код: void program() { ...


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

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

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