Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
1

Падает программа

24.03.2013, 18:00. Просмотров 1639. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2013, 18:00
Ответы с готовыми решениями:

программа падает
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; class area{ public: virtual bool...

Почему падает программа?
Почему падает программа? Компилируется без ошибок, но при запуске аварийное завершение работы....

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

Падает параллельная программа на MPI
Добрый день. Написал программу поразрядной сортировки для целых чисел с четно-нечетным слиянием...

7
7 / 5 / 5
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:21 2
ГузелькаС, используйте string.h вместо stdafx.h. и что в вашем понятии завершение? если просто закрывать, то раннер будет вам выдавать что программа завершилась с кодом ....) Ваша программа в конце выполнения ждет нажатия любой клавиши и дальше закроется)
0
3317 / 2694 / 729
Регистрация: 25.03.2012
Сообщений: 9,733
Записей в блоге: 1
24.03.2013, 18:24 3
под строку s1 выделено маловато места, возможно.
1
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
24.03.2013, 18:25 4
вот тут
C++
1
char s1[25]="Hello country.";
исправь на
C++
1
char s1[26]="Hello country.";
ты strcat'ом стек ломаешь.
1
5 / 5 / 6
Регистрация: 04.12.2011
Сообщений: 178
24.03.2013, 18:27  [ТС] 5
а, я поняла свою ошибку)
0
Don't worry, be happy
16970 / 9851 / 1897
Регистрация: 27.09.2012
Сообщений: 24,426
Записей в блоге: 1
24.03.2013, 18:27 6
Цитата Сообщение от ГузелькаС Посмотреть сообщение
но при завершении падает.
Повреждена память.
Повредили Вы её при этой операции:
C++
1
strcat(s1,s2);
а именно:
s1 - 14 символов
s2 - 11 символов
и того получаем 25 символов плюс завершающий ноль - всего 26, а буфер у Вас 25
1
7 / 5 / 5
Регистрация: 24.03.2013
Сообщений: 40
24.03.2013, 18:30 7
Kuzia domovenok, честно, не знаю, в таком массиве надо регестрировать место под символ конца строки?

Добавлено через 2 минуты
Почему то CodeBlocks по этому поводу даже ни чего не предупредил(
0
Jesus loves me
Эксперт С++
5162 / 3131 / 353
Регистрация: 12.12.2009
Сообщений: 7,919
Записей в блоге: 2
24.03.2013, 18:38 8
Цитата Сообщение от VaJI Посмотреть сообщение
Почему то CodeBlocks по этому поводу даже ни чего не предупредил(
целостность стека проверяется в конце программы, и то только в дебаг режиме и в отдельно взятом компиляторе.

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

Добавлено через 1 минуту
а без оптимизации не ругается) похоже при оптимизации добавляется какой-то контроль за стеком, чтоб убедится, что не "переоптимизировали"
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2013, 18:38

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

Программа падает на операторе delete
#include &lt;iostream&gt; int main() { int temp = 8; int* p = &amp;temp; delete p;

Программа падает во время работы деструктора
/ ConsoleApplication6.cpp: определяет точку входа для консольного приложения. // #include...

Неожиданно падает программа с библиотекой ffmpeg
Простите, не знал, в какой раздел сунуть и сунил сюда, надеюсь, перенесут по адресу. Суть...

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


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

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

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