Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21

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

10.03.2012, 16:53. Показов 1023. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2012, 16:53
Ответы с готовыми решениями:

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

Ошибка сегментирования
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;unistd.h&gt; #include &lt;fcntl.h&gt; #include &lt;string.h&gt; using...

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

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

C++
1
 arg = reinterpret_cast< void**>(&psampl); // это изменение локального указателя.
1
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
10.03.2012, 17:26  [ТС]
Спасибо за ответ.
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
10.03.2012, 17:31
проблема не с 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
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
10.03.2012, 17:35  [ТС]
Спасибо ещё раз. Всё понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2012, 17:35
Помогаю со студенческими работами здесь

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

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

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

ошибка сегментирования
При запуске скомпилированной (gcc) программы выскакивает ошибка сегментирования, а при запуске ее же в дебагере (gdb) -- program exited...

C++ Ошибка сегментирования
Вот листинг файла: #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { char...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru