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

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

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

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

24.03.2013, 18:00. Просмотров 480. Ответов 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();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:21     Падает программа #2
ГузелькаС, используйте string.h вместо stdafx.h. и что в вашем понятии завершение? если просто закрывать, то раннер будет вам выдавать что программа завершилась с кодом ....) Ваша программа в конце выполнения ждет нажатия любой клавиши и дальше закроется)
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
24.03.2013, 18:24     Падает программа #3
под строку s1 выделено маловато места, возможно.
Kastaneda
Форумчанин
Эксперт С++
4468 / 2830 / 224
Регистрация: 12.12.2009
Сообщений: 7,200
Записей в блоге: 1
Завершенные тесты: 1
24.03.2013, 18:25     Падает программа #4
вот тут
C++
1
char s1[25]="Hello country.";
исправь на
C++
1
char s1[26]="Hello country.";
ты strcat'ом стек ломаешь.
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
24.03.2013, 18:27  [ТС]     Падает программа #5
а, я поняла свою ошибку)
Croessmah
Модератор
Эксперт CЭксперт С++
12878 / 7264 / 810
Регистрация: 27.09.2012
Сообщений: 17,950
Записей в блоге: 2
Завершенные тесты: 1
24.03.2013, 18:27     Падает программа #6
Цитата Сообщение от ГузелькаС Посмотреть сообщение
но при завершении падает.
Повреждена память.
Повредили Вы её при этой операции:
C++
1
strcat(s1,s2);
а именно:
s1 - 14 символов
s2 - 11 символов
и того получаем 25 символов плюс завершающий ноль - всего 26, а буфер у Вас 25
VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:30     Падает программа #7
Kuzia domovenok, честно, не знаю, в таком массиве надо регестрировать место под символ конца строки?

Добавлено через 2 минуты
Почему то CodeBlocks по этому поводу даже ни чего не предупредил(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2013, 18:38     Падает программа
Еще ссылки по теме:

Падает программа с opencv C++
C++ Динамический массив нулевого размера. Почему не падает программа?
Wincript, падает программа при получении SHA256 C++
Неожиданно падает программа с библиотекой ffmpeg C++
C++ Почему при изменении литерала const char* программа падает?

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

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

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

Добавлено через 1 минуту
а без оптимизации не ругается) похоже при оптимизации добавляется какой-то контроль за стеком, чтоб убедится, что не "переоптимизировали"
Yandex
Объявления
24.03.2013, 18:38     Падает программа
Ответ Создать тему
Опции темы

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