Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
korrav
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
1

Ошибка сегментирования

10.03.2012, 16:53. Просмотров 452. Ответов 4
Метки нет (Все метки)

Здравствуйте. Здесь представлена программа, единственное назначение которой промоделировать поведение другой более сложной программы.
C++
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
#include <stdio.h>
struct test
{
    int count;
    int mode;
    int sampl [3];
} ec, *ec_point=NULL;
int* psampl;
void func( void**);
int main()
{
    int** ptsampl=NULL;
    func(reinterpret_cast< void**>(ptsampl));
    *ptsampl-=2;
        ec_point=reinterpret_cast<struct test*>(*ptsampl);
    printf("cont =%d\nmode =%d\nsampl =%d %d %d\n", ec_point->count, ec_point->mode, ec_point->sampl[0], ec_point->sampl[1], ec_point->sampl[2]);
    return 0;
}
 
void func( void** arg)
{
    for (int i=0; i<3; i++) ec.sampl[i]=i;
    ec.count =0;
    ec.mode=2;
    psampl= ec.sampl;
    arg = reinterpret_cast< void**>(&psampl);
    return;
}
Программа создается без ошибок. Однако при попытке выполнения выскакивает сообщение: Ошибка сегментирования. Пока не могу понять причину этой ошибки. Поэтому надеюсь на вашу помощь. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2012, 16:53
Ответы с готовыми решениями:

Ошибка в коде (Ошибка сегментирования (core dumped)
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; ...

ошибка сегментирования
При запуске скомпилированной (gcc) программы выскакивает ошибка...

Ошибка сегментирования
Всем привет. Ситуация такая: У меня есть g++ версии &quot;gcc version 6.3.0...

Ошибка сегментирования
Здравствуйте! Подскажите, пожалуйста, почему программа выводит &quot;Ошибка...

C++ Ошибка сегментирования
Вот листинг файла: #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;vector&gt;...

4
DU
1487 / 1133 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
10.03.2012, 16:59 2
в строчке 14 переменная ptsampl указывает на NULL, а вы ее разыменовываете.
функция func ее не изменяет как вы возможно того ожидали.

C++
1
 arg = reinterpret_cast< void**>(&psampl); // это изменение локального указателя.
1
korrav
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
10.03.2012, 17:26  [ТС] 3
Спасибо за ответ.
0
DU
1487 / 1133 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
10.03.2012, 17:31 4
проблема не с psampl, а с ptsampl, значение которой передается в функцию func. внутри этой функции идет работа с переменной с именем arg. так вот запись arg = 0; не изменяет то, на что будет указывать ptsampl.

вот простая аналогия:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//если хотите, чтобы функция меняла переменную инт, передавайте ее в функцию по указателю:
 
void f(int* pInt) {*pInt = 0; }
 
int i = 0;
f(&i);
 
 
// если хотите, чтобы функция изменяла переменную типа int*, передавайте ее в функцию
// по указателю
void f(int** ppInt)  {*ppInt = 0; }
 
int* pInt;
f(&pInt);
 
// если хотите, чтобы функция изменяла переменную типа int**, передавайте ее в функцию
// по указателю
void f(int*** pppInt) {*pppInt = 0; }
 
int** ppInt;
f(&ppInt);
1
korrav
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
10.03.2012, 17:35  [ТС] 5
Спасибо ещё раз. Всё понятно.
0
10.03.2012, 17:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2012, 17:35

Ошибка сегментирования
Написал я быдлокодик, вроде компилируется даже. Но при запуске под Linux'ом...

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

Ошибка сегментирования
Добрый день, возникла проблема: Вот программа, суть из исходного файла у слов...


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

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

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