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

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

Войти
Регистрация
Восстановить пароль
 
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
#1

Падает программа - C++

24.03.2013, 18:00. Просмотров 497. Ответов 7
Метки нет (Все метки)

ошибки нет. предупреждения такого вида: warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

программа нормально работает, все верно показывает, но при завершении падает.
что делать ?


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 "stdafx.h"
#include "iostream"
#include <conio.h> 
using namespace std;
 
void main()
{
    setlocale ( LC_ALL, "Russian" );
    char s1[25]="Hello country.";
    char s2[]="Hello world"; 
    char s3[25]="c++ ";
    cout<<"s1(было до strcat(s1,s2))="<<s1<<endl;
    cout<<"s2                       ="<<s2<<endl;
    strcat(s1,s2);
    cout<<"s1(стало после strcat(s1,s2))="<<s1<<endl;
    
    cout<<"s3(было до strncat(s3,s2,5))="<<s3<<endl;
    cout<<"s2                       ="<<s2<<endl;
    strncat(s3,s2,5);
    cout<<"s3(стало после strncat(s3,s2,5))="<<s3<<endl;
 
    getch();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2013, 18:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Падает программа (C++):

Почему падает программа? - C++
Почему падает программа? Компилируется без ошибок, но при запуске аварийное завершение работы. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Падает программа с opencv - C++
Код #include &lt;cv.h&gt; #include &lt;highgui.h&gt; int main() { // задаём высоту и ширину картинки int height = 620; ...

Программа падает без printf - C++
Пишу простую программу, которая в цикле запускает другую, меняя один из аргументов от нуля до 700. Два одинаковых варианта, с printf...

Падает программа при использовании DLL - C++
Раньше писал DLL для одного приложения, теперь мне понадобилось его использовать в другом. Подключил lib, хедер и саму DLL положил рядом с...

Программа падает при чтении из файлов - C++
В C++ слова читаются из двух файлов.выбивает ошибку.Что можно сделать?

Неожиданно падает программа с библиотекой ffmpeg - C++
Простите, не знал, в какой раздел сунуть и сунил сюда, надеюсь, перенесут по адресу. Суть проблемы: Передается в функцию SDP запрос в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:21 #2
ГузелькаС, используйте string.h вместо stdafx.h. и что в вашем понятии завершение? если просто закрывать, то раннер будет вам выдавать что программа завершилась с кодом ....) Ваша программа в конце выполнения ждет нажатия любой клавиши и дальше закроется)
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
24.03.2013, 18:24 #3
под строку s1 выделено маловато места, возможно.
1
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
24.03.2013, 18:25 #4
вот тут
C++
1
char s1[25]="Hello country.";
исправь на
C++
1
char s1[26]="Hello country.";
ты strcat'ом стек ломаешь.
1
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
24.03.2013, 18:27  [ТС] #5
а, я поняла свою ошибку)
0
Croessmah
Эксперт CЭксперт С++
13219 / 7491 / 844
Регистрация: 27.09.2012
Сообщений: 18,412
Записей в блоге: 3
Завершенные тесты: 1
24.03.2013, 18:27 #6
Цитата Сообщение от ГузелькаС Посмотреть сообщение
но при завершении падает.
Повреждена память.
Повредили Вы её при этой операции:
C++
1
strcat(s1,s2);
а именно:
s1 - 14 символов
s2 - 11 символов
и того получаем 25 символов плюс завершающий ноль - всего 26, а буфер у Вас 25
1
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:30 #7
Kuzia domovenok, честно, не знаю, в таком массиве надо регестрировать место под символ конца строки?

Добавлено через 2 минуты
Почему то CodeBlocks по этому поводу даже ни чего не предупредил(
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
24.03.2013, 18:38 #8
Цитата Сообщение от VaJI Посмотреть сообщение
Почему то CodeBlocks по этому поводу даже ни чего не предупредил(
целостность стека проверяется в конце программы, и то только в дебаг режиме и в отдельно взятом компиляторе.

Добавлено через 4 минуты
хотя не, gcc вот тоже ругается http://liveworkspace.org/code/HD9yY

Добавлено через 1 минуту
а без оптимизации не ругается) похоже при оптимизации добавляется какой-то контроль за стеком, чтоб убедится, что не "переоптимизировали"
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 18:38
Привет! Вот еще темы с ответами:

Программа падает при использовании std::thread - C++
Дополнительный вопрос:почему эта программа падает: #include &lt;thread&gt; #include &lt;Windows.h&gt; void client(int arg){ } int main() { ...

Программа падает при вызове vector::begin() - C++
#include &lt;iostream&gt; #include &lt;vector&gt; int main () { std::vector&lt;int&gt; i{0,1,2,3,4,5,6}; i.erase(i.begin()); for(int...

Wincript, падает программа при получении SHA256 - C++
Делаю так: BYTE * pbHash; // Хэш WCHAR * wHex; // hex хэша пароля DWORD dwHashLen; // Длина хэш суммы HCRYPTPROV hProv =...

При объявлении структуры глобальной программа падает - C++
Всем привет! Сразу говорю, это пример кода. Не вижу смысла все тут переписывать, я просто накидал кусок кода похожий на мой. Вопрос...


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

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

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