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

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

Восстановить пароль Регистрация
 
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
24.03.2013, 18:00     Падает программа #1
ошибки нет. предупреждения такого вида: 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
 Аватар для VaJI
7 / 5 / 1
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:21     Падает программа #2
ГузелькаС, используйте string.h вместо stdafx.h. и что в вашем понятии завершение? если просто закрывать, то раннер будет вам выдавать что программа завершилась с кодом ....) Ваша программа в конце выполнения ждет нажатия любой клавиши и дальше закроется)
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
24.03.2013, 18:24     Падает программа #3
под строку s1 выделено маловато места, возможно.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 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
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
24.03.2013, 18:27     Падает программа #6
Цитата Сообщение от ГузелькаС Посмотреть сообщение
но при завершении падает.
Повреждена память.
Повредили Вы её при этой операции:
C++
1
strcat(s1,s2);
а именно:
s1 - 14 символов
s2 - 11 символов
и того получаем 25 символов плюс завершающий ноль - всего 26, а буфер у Вас 25
VaJI
 Аватар для 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     Падает программа
Еще ссылки по теме:

C++ Shared_str реализация - На выходе из деструктора падает программа
C++ Почему программа падает при сортировке массивов больших размерностей
C++ Программа падает при вызове vector::begin()

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

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

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

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

Текущее время: 04:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru