Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
programina
2054 / 609 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
1

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

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

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

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

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

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

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

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

14
Croessmah
++Ͻ
15816 / 8951 / 1719
Регистрация: 27.09.2012
Сообщений: 21,993
Записей в блоге: 2
Завершенные тесты: 2
20.02.2014, 15:51 2
Цитата Сообщение от programina Посмотреть сообщение
но меньше чем есть в наличии всей памяти.
а политика распределения памяти какая стоит?
1
Tulosba
:)
Эксперт С++
4752 / 3246 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
20.02.2014, 16:01 3
Цитата Сообщение от programina Посмотреть сообщение
Как исправить эту ошибку?
Показать код для начала.
1
programina
2054 / 609 / 41
Регистрация: 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
20.02.2014, 16:18
0x10
2746 / 1845 / 311
Регистрация: 24.11.2012
Сообщений: 4,567
20.02.2014, 16:28 5
Лучший ответ Сообщение было отмечено programina как решение

Решение

Скорее всего, прибивает ядро. Больше вроде некому.
1. Узнать pid процесса.
2. Посмотреть в логи (/var/log/syslog).
3. Найти сообщение в духе "Out of memory: Kill process <pid>"
1
castaway
Эксперт С++
4945 / 3051 / 455
Регистрация: 10.11.2010
Сообщений: 11,146
Записей в блоге: 10
Завершенные тесты: 1
20.02.2014, 16:36 6
Ты вводишь число в виде строки потому что оно очень большое и не помещается в int, а потом преобразуешь его в int в надежде на то что оно туда поместится?
1
programina
2054 / 609 / 41
Регистрация: 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 / 0
Регистрация: 08.07.2013
Сообщений: 351
21.02.2014, 19:54 12
Подскажите пожалуйста, как модернизировать командную строку до того терминала, что на скрин-шоте?
0
programina
2054 / 609 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
21.02.2014, 20:06  [ТС] 13
BESSON_off, просто установите линукс. Там терминал по умолчанию красивее, чем в виндовсе.
0
BESSON_off
3 / 0 / 0
Регистрация: 08.07.2013
Сообщений: 351
21.02.2014, 21:00 14
Цитата Сообщение от programina Посмотреть сообщение
просто установите линукс
а в окнах подобного не придумать?
0
programina
21.02.2014, 21:15  [ТС]     Программа завершается с ошибкой Killed
  #15

Не по теме:

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

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

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

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

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


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

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

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