Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
artemmensk
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 3
1

Segmentation fault (core dumped)

25.12.2012, 18:30. Просмотров 651. Ответов 2
Метки нет (Все метки)

Добрый день.

OC - lubuntu;
компилятор - Free Pascal Compiler version 2.6.0-6 [2012/10/05] for x86_64

Есть двухмерный массив Boolean'ов.
Программа вначале заполняет каждый элемент массива значениями TRUE, потом выводит значения на экран:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
program tetris;
uses crt;
const
    width_field=5;
    hight_field=10; 
 
type field_name=array [0..width_field,0..hight_field] of boolean;
 
var field:field_name;
    i,j:byte;
 
BEGIN
    clrscr;
 
    for i:=1 to hight_field  do
        begin
            for j:=1 to width_field do
                begin
                    field[i,j]:=TRUE;
                end;
        end;
 
    for i:=1 to hight_field  do
        begin           
            for j:=1 to width_field do
                begin
                    write(field[i,j],' ');
                end;
            writeln;
        end;
 
        writeln;
 
END.
код компилируется без ошибок, выскакивает только "знаменитое" предупреждение:
Bash
1
/usr/bin/ld: warning: link.res contains output sections; did you forget -T?
запускаю программу и получаю:
Bash
1
Segmentation fault (core dumped)
Причем, если сделать ширину (width_field) и длину (hight_field) одинаковыми (10 на 10, 25 на 25 и.д. ) программа нормально исполняется.
Если сделать не 5 на 10, а наоборот, 10 на 5 ( const width_field=10; hight_field=5; ) также никаких проблем...
Нет проблем и с массивом 3 на 7, а вот 2 на 10, как и 5 на 10 выдают ошибку...

Вписывал Segmentation fault (core dumped) в гугле, много разной информации с множеством сложных слов, мне начинающему не получается разобраться, понять причины проблемы и решить её.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 18:30
Ответы с готовыми решениями:

Segmentation fault
"Segmentation fault" из-за чего может вылетать?

Segmentation fault при открытии файла
Ошибка в строке 450, процедура dopolniti вызывается в строке 527. Файл...

Segmentation fault после проверки значения символа
Пишу программу, переводящую арифметическое выражение в обратную польскую...

Не могу найти ошибку (Segmentation fault)
Выдает "segmentation fault" и при пошаговом останавливается на Writeline...

Segmentation fault (core dumped)
Добрый вечер. При вводе любых чисел, кроме 0 - й, выводит ошибку. #include...

2
baquaqa
durila :d
125 / 107 / 98
Регистрация: 21.12.2012
Сообщений: 160
25.12.2012, 18:52 2
Здравствуйте. Проблема в том, что в описании массива вы указываете число строк равное width_field
а в цикле - hight_field

Вот работающий вариант:
Кликните здесь для просмотра всего текста

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program tetris;
uses crt;
const
    width_field=5;
    hight_field=10; 
 
type field_name=array [0..width_field,0..hight_field] of boolean;  
                    { 0..width_field - строки 0..hight_field - столбцы}
 
var field:field_name;
    i,j:byte;
 
BEGIN
    clrscr;
  {первый цикл - строки, второй цикл - столбцы}
    for i:=0 to width_field  do
    for j:=0 to hight_field  do field[i,j]:=TRUE;
  
 
    for i:=0 to width_field   do begin          
    for j:=0 to hight_field do write(field[i,j],' ');
                                      writeln;
                                      end;
     
END.
1
artemmensk
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 3
25.12.2012, 19:13  [ТС] 3
Цитата Сообщение от baquaqa Посмотреть сообщение
Здравствуйте. Проблема в том, что в описании массива вы указываете число строк равное width_field
а в цикле - hight_field

Вот работающий вариант:
Кликните здесь для просмотра всего текста

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program tetris;
uses crt;
const
    width_field=5;
    hight_field=10; 
 
type field_name=array [0..width_field,0..hight_field] of boolean;  
                    { 0..width_field - строки 0..hight_field - столбцы}
 
var field:field_name;
    i,j:byte;
 
BEGIN
    clrscr;
  {первый цикл - строки, второй цикл - столбцы}
    for i:=0 to width_field  do
    for j:=0 to hight_field  do field[i,j]:=TRUE;
  
 
    for i:=0 to width_field   do begin          
    for j:=0 to hight_field do write(field[i,j],' ');
                                      writeln;
                                      end;
     
END.
угу) запостил вопрос и через 5 минут сам увидел)) спасибо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 19:13

Segmentation fault (core dumped)
Добрый день. Подскажите, при перемножении матриц более чем 600х600, появляется...

Segmentation fault(Core dumped)
#include <math.h> #include <stdio.h> #include <iostream> using namespace...

Segmentation fault (core dumped)
Всем доброго времени суток. Не могли бы посмотреть кусок программы и подсказать...


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

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

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