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

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

Войти
Регистрация
Восстановить пароль
 
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
#1

Программа завершается с ошибкой Killed - C++

20.02.2014, 15:30. Просмотров 535. Ответов 14
Метки нет (Все метки)

Программа завершается с ошибкой Killed, когда я выделяю очень много динамической памяти, но меньше чем есть в наличии всей памяти. Как исправить эту ошибку?
Программа завершается с ошибкой Killed
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2014, 15:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа завершается с ошибкой Killed (C++):

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

Программа аварийно завершается с ошибкой "map/set iterators are incompatible" - C++
Добрый день! Проблема такая: в s1 и s2 рандомно добавляю числа, хочу найти объединение этих множеств. Если использовать такой код, то все в...

Собранное приложение завершается с ошибкой - C++
Здравствуйте. Подскажите пожалуйста новичку. Взял приложение из учебника, переписал в Visual Studio, собрал, а оно выкидывает. Приложение...

Не прогружаются каскады haarcascade_frontalface_alt.xml в Visual Studio 2010. OpenCV. Завершается с ошибкой 1 - C++
Все форумы перечитала, много вариантов испробовала, но результата никакого. Подскажите кто сталкивался с подобной проблемой. Код взят...

Программа не завершается - C++
Здравствуйте! 1) Моя программа на первом же тесте превышает положенное время (она не долго работает, она просто не завершается)....

Не завершается программа - C++
После ввода массива консоль не закрывается, почему? #include "stdafx.h" #include <fstream> #include <stdlib.h> #include <iomanip> ...

14
Croessmah
Эксперт CЭксперт С++
13427 / 7582 / 856
Регистрация: 27.09.2012
Сообщений: 18,674
Записей в блоге: 3
Завершенные тесты: 1
20.02.2014, 15:51 #2
Цитата Сообщение от programina Посмотреть сообщение
но меньше чем есть в наличии всей памяти.
а политика распределения памяти какая стоит?
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
20.02.2014, 16:01 #3
Цитата Сообщение от programina Посмотреть сообщение
Как исправить эту ошибку?
Показать код для начала.
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.02.2014, 16:18  [ТС] #4
Цитата Сообщение от Tulosba Посмотреть сообщение
Показать код для начала
Если ввести 999999999999999999, то напишет что-то про bad alloc, а если поменьше, например 222222222222222222, то просто killed
C++
#include <stdio.h>
#include <locale.h>
#include <math.h>
 
 
int moo()
{
    setlocale(LC_ALL, "Russian");
 
    char s[1628400];
    int a[7];
    int k = 0;
    int n = 0;
    printf("Введите число n: ");
    scanf("%s", s);
 
    for(int i = 0; i < 7; i++)
        if(s[i] >= '0' && s[i] <= '9'){
            a[k] = s[i]-'0';
            k++;
        }
 
    for(int i = 0; i < k; i++)
        n += a[k-i-1] * pow10(i);
 
    printf("Вы ввели число %d\n\n", n);
 
    return n;
}
 
 
int main(int argc, char *argv[])
{
    const int N = moo();
 
 
    float **x = new float*[N];
    for(int i = 0; i < N; i++) x[i] = new float[N];
    printf("Память выделена\n");
 
 
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            x[i][j] = 0.0;
 
 
    for(int i = 0; i < N; i++) delete [] x[i];
    delete [] x;
    printf("Память освобождена\n");
}
Добавлено через 28 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
а политика распределения памяти какая стоит?
Не знаю.
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
20.02.2014, 16:28 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Скорее всего, прибивает ядро. Больше вроде некому.
1. Узнать pid процесса.
2. Посмотреть в логи (/var/log/syslog).
3. Найти сообщение в духе "Out of memory: Kill process <pid>"
1
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
20.02.2014, 16:36 #6
Ты вводишь число в виде строки потому что оно очень большое и не помещается в int, а потом преобразуешь его в int в надежде на то что оно туда поместится?
1
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.02.2014, 16:43  [ТС] #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Скорее всего, прибивает ядро. Больше вроде некому
Тоже склоняюсь к такому варианту, потому что на виндовсе всегда bad alloc пишет.
Цитата Сообщение от castaway Посмотреть сообщение
Ты вводишь число в виде строки потому что оно очень большое и не помещается в int, а потом преобразуешь его в int в надежде на то что оно туда поместится?
Мне так и нужно, например пользователь введет какую-нибудь ерунду вместо числа, а программа преобразует эту ерунду в число с максимум 7-ю цифрами.
0
0x10
20.02.2014, 16:46
  #8

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Мне так и нужно, например пользователь введет какую-нибудь ерунду вместо числа, а программа преобразует эту ерунду в число с максимум 7-ю цифрами.
Если пользователь ввел ерунду, то лучше сообщить ему об этом и не делать вообще ничего. А то получается, что он пытался вводить одни данные, а программа по какой-то своей логике решила работать на других.

1
Tulosba
20.02.2014, 16:48
  #9

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
а программа по какой-то своей логике решила работать на других.
программ(ин)е лучше знать, что хочет пользователь

0
programina
20.02.2014, 16:51  [ТС]
  #10

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
Если пользователь ввел ерунду, то лучше сообщить ему об этом и не делать вообще ничего. А то получается, что он пытался вводить одни данные, а программа по какой-то своей логике решила работать на других.
Я думаю, что не стоит ничего сообщать пользователю, потому что если он на запрос "Введите число" вводит ерунду, то он либо в невменяемом состоянии, либо издевается над програмой.

0
0x10
20.02.2014, 16:52
  #11

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
если он на запрос "Введите число" вводит ерунду, то он либо в невменяемом состоянии, либо издевается над програмой
Последнее вполне уместно, особенно если в графе "должность" значится "Специалист по тестированию ПО".

0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
21.02.2014, 19:54 #12
Подскажите пожалуйста, как модернизировать командную строку до того терминала, что на скрин-шоте?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
21.02.2014, 20:06  [ТС] #13
BESSON_off, просто установите линукс. Там терминал по умолчанию красивее, чем в виндовсе.
0
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 348
21.02.2014, 21:00 #14
Цитата Сообщение от programina Посмотреть сообщение
просто установите линукс
а в окнах подобного не придумать?
0
programina
21.02.2014, 21:15  [ТС]     Программа завершается с ошибкой Killed
  #15

Не по теме:

Цитата Сообщение от BESSON_off Посмотреть сообщение
а в окнах подобного не придумать?
Врядли. Даже если есть то скорее всего не очень качественное. Посмотрите в гугле по запросу "Terminal Emulator for Windows", может повезет и найдете что-нибудь.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 21:15
Привет! Вот еще темы с ответами:

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

программа завершается аварийно - C++
запускаю компилятор, все запустилось, работает (меню из кучи условий if-else). выбираю любой пункт меню и он работает, после этого надо...

Программа сразу завершается - C++
Здравствуйте! Я написал программу с конфигурацией решения Release, при запуске exe-файла программа тут же закрывается, а то что она выводит...

Рекурсия, почему программа завершается аварийно? - C++
Подскажите, почему не работает рекурсия?? #include &lt;iostream&gt; using namespace std; void fn(int value) { fn(value); } int...


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

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

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