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

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

Восстановить пароль Регистрация
 
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.02.2014, 15:30     Программа завершается с ошибкой Killed #1
Программа завершается с ошибкой Killed, когда я выделяю очень много динамической памяти, но меньше чем есть в наличии всей памяти. Как исправить эту ошибку?
Программа завершается с ошибкой Killed
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12080 / 6941 / 782
Регистрация: 27.09.2012
Сообщений: 17,221
Записей в блоге: 2
Завершенные тесты: 1
20.02.2014, 15:51     Программа завершается с ошибкой Killed #2
Цитата Сообщение от programina Посмотреть сообщение
но меньше чем есть в наличии всей памяти.
а политика распределения памяти какая стоит?
Tulosba
:)
Эксперт С++
4382 / 3225 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.02.2014, 16:01     Программа завершается с ошибкой Killed #3
Цитата Сообщение от programina Посмотреть сообщение
Как исправить эту ошибку?
Показать код для начала.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.02.2014, 16:18  [ТС]     Программа завершается с ошибкой Killed #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 Посмотреть сообщение
а политика распределения памяти какая стоит?
Не знаю.
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
20.02.2014, 16:28     Программа завершается с ошибкой Killed #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Скорее всего, прибивает ядро. Больше вроде некому.
1. Узнать pid процесса.
2. Посмотреть в логи (/var/log/syslog).
3. Найти сообщение в духе "Out of memory: Kill process <pid>"
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
20.02.2014, 16:36     Программа завершается с ошибкой Killed #6
Ты вводишь число в виде строки потому что оно очень большое и не помещается в int, а потом преобразуешь его в int в надежде на то что оно туда поместится?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
20.02.2014, 16:43  [ТС]     Программа завершается с ошибкой Killed #7
Цитата Сообщение от 0x10 Посмотреть сообщение
Скорее всего, прибивает ядро. Больше вроде некому
Тоже склоняюсь к такому варианту, потому что на виндовсе всегда bad alloc пишет.
Цитата Сообщение от castaway Посмотреть сообщение
Ты вводишь число в виде строки потому что оно очень большое и не помещается в int, а потом преобразуешь его в int в надежде на то что оно туда поместится?
Мне так и нужно, например пользователь введет какую-нибудь ерунду вместо числа, а программа преобразует эту ерунду в число с максимум 7-ю цифрами.
0x10
20.02.2014, 16:46
  #8

Не по теме:

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

Tulosba
20.02.2014, 16:48
  #9

Не по теме:

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

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

Не по теме:

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

0x10
20.02.2014, 16:52
  #11

Не по теме:

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

BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 331
21.02.2014, 19:54     Программа завершается с ошибкой Killed #12
Подскажите пожалуйста, как модернизировать командную строку до того терминала, что на скрин-шоте?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
21.02.2014, 20:06  [ТС]     Программа завершается с ошибкой Killed #13
BESSON_off, просто установите линукс. Там терминал по умолчанию красивее, чем в виндовсе.
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 331
21.02.2014, 21:00     Программа завершается с ошибкой Killed #14
Цитата Сообщение от programina Посмотреть сообщение
просто установите линукс
а в окнах подобного не придумать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2014, 21:15     Программа завершается с ошибкой Killed
Еще ссылки по теме:

C++ Зависает и не завершается простейшая, пустая программа
C++ Программа завершается при большом размере матрицы смежности
Программа завершается при любых действиях пользователя C++
C++ Программа аварийно завершается с ошибкой "map/set iterators are incompatible"
Не прогружаются каскады haarcascade_frontalface_alt.xml в Visual Studio 2010. OpenCV. Завершается с ошибкой 1 C++

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

Или воспользуйтесь поиском по форуму:
programina
21.02.2014, 21:15  [ТС]     Программа завершается с ошибкой Killed
  #15

Не по теме:

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

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

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