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

Ошибка сегментирования (core dumped) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.81
CepbIu
12 / 12 / 0
Регистрация: 26.06.2010
Сообщений: 38
07.10.2010, 17:26     Ошибка сегментирования (core dumped) #1
собственно вот такая проблема:
при попытке помять строки местами возникает сообщение "Ошибка сегментирования (core dumped)"
строки меняются в массиве типа double
вот код
C++
1
2
3
4
5
6
7
8
for(MinValue.i;MinValue.i>=0;MinValue.i--)
    {
        for(j=0;j<n;j++){
        tmp=mas[MinValue.i][j];
        mas[MinValue.i][j]=mas[MinValue.i-1][j];
        mas[MinValue.i-1][j]=tmp;
        }
    }
программа собирается с помощью g++(OS Linux)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2010, 17:26     Ошибка сегментирования (core dumped)
Посмотрите здесь:

C++ C++ Ошибка сегментирования
C++ Ошибка сегментирования.
ошибка сегментирования C++
C++ Ошибка сегментирования
Ошибка сегментирования C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.10.2010, 17:49     Ошибка сегментирования (core dumped) #2
Цитата Сообщение от CepbIu Посмотреть сообщение
mas[MinValue.i-1][j]
при i равной нулю действительно грохнется, хоть в линухе, хоть в сантехнике...
CepbIu
12 / 12 / 0
Регистрация: 26.06.2010
Сообщений: 38
08.10.2010, 03:24  [ТС]     Ошибка сегментирования (core dumped) #3
Цитата Сообщение от easybudda Посмотреть сообщение
при i равной нулю действительно грохнется, хоть в линухе, хоть в сантехнике...
это я понимаю
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
08.10.2010, 10:03     Ошибка сегментирования (core dumped) #4
Цитата Сообщение от CepbIu Посмотреть сообщение
это я понимаю
Тогда что собственно удивляет?
Цитата Сообщение от CepbIu Посмотреть сообщение
for(MinValue.i;MinValue.i>=0;MinValue.i--)
На последней итерации в этом цикле и падает.
CepbIu
12 / 12 / 0
Регистрация: 26.06.2010
Сообщений: 38
09.10.2010, 12:26  [ТС]     Ошибка сегментирования (core dumped) #5
Цитата Сообщение от easybudda Посмотреть сообщение
Тогда что собственно удивляет?

На последней итерации в этом цикле и падает.
я понимаю где он падает
я не понимаю почему?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.10.2010, 13:59     Ошибка сегментирования (core dumped) #6
Цитата Сообщение от CepbIu Посмотреть сообщение
mas[MinValue.i][j]=mas[MinValue.i-1][j];
первый же проход при i = 0, j = 0
C++
1
mas[0][0] = mas[-1][0];
то бишь строка в памяти должна начинаться с адреса mas + 0xffffffff на 32-битных системах. Вот Вам и ошибка сегментации. В отладчике посмотреть не пробовали?
CepbIu
12 / 12 / 0
Регистрация: 26.06.2010
Сообщений: 38
09.10.2010, 14:12  [ТС]     Ошибка сегментирования (core dumped) #7
Цитата Сообщение от easybudda Посмотреть сообщение
первый же проход при i = 0, j = 0
C++
1
mas[0][0] = mas[-1][0];
то бишь строка в памяти должна начинаться с адреса mas + 0xffffffff на 32-битных системах. Вот Вам и ошибка сегментации. В отладчике посмотреть не пробовали?
то что вы сказали не выполняется
компиляция происходит без проблем, следовательно нет и лога
StUser
11 / 11 / 1
Регистрация: 09.10.2010
Сообщений: 23
09.10.2010, 14:35     Ошибка сегментирования (core dumped) #8
Цитата Сообщение от easybudda Посмотреть сообщение
то бишь строка в памяти должна начинаться с адреса mas + 0xffffffff на 32-битных системах. Вот Вам и ошибка сегментации. В отладчике посмотреть не пробовали?
Не совсем так. Отрицательные индексы вполне допустимы:
C++
1
2
3
4
5
6
7
8
#include <cstdio>
 
int main()
{ 
 int a[]={0,1,2,3,4,5,6};
 int *b=a+3;
 printf("%d",b[-1]);
}
То есть, обращение происходит именно к mas-1. А так как mas, похоже, указывает на начало выделенной для массива области памяти, то происходит попытка обращения к предыдущему не зарезервированному сегменту памяти, отсюда и ошибка.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2010, 17:23     Ошибка сегментирования (core dumped)
Еще ссылки по теме:

Ошибка сегментирования C++
C++ Segmentation fault (core dumped)
Ошибка в коде (Ошибка сегментирования (core dumped) C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
09.10.2010, 17:23     Ошибка сегментирования (core dumped) #9
Цитата Сообщение от StUser Посмотреть сообщение
Не совсем так. Отрицательные индексы вполне допустимы:
ну да, так правильнее.
Yandex
Объявления
09.10.2010, 17:23     Ошибка сегментирования (core dumped)
Ответ Создать тему
Опции темы

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