Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указатель на указатель и segmentation fault, Причина возникновения seg.fault? 
V
    Опции темы
Zerstroer
Дата 17.6.2013, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.8.2007
Где: Алма-Ата

Репутация: 1
Всего: 3



Доброго времени суток всем!
Моделирую ошибку segmentation fault в большой программе. Моделирование свел к приведенному ниже примеру:

Код

#include <cstdlib>

using namespace std;

struct struct_t {
    int int_f;   
};

int main(int argc, char** argv) {
    static struct_t* structpointer = NULL;               
    struct_t** structpointer2 = &structpointer;   
    (*structpointer2)->int_f = 10;       //тут segmentation fault
    return 0;
}



Прошу прокомментировать, почему так происходит. Туплю неимоверно. Понять в состоянии, но мне не по глазам.






--------------------
In silico
PM MAIL ICQ   Вверх
bsa
Дата 17.6.2013, 14:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



знаешь, твой код эквивалентен:
Код
struct struct_t {
    int int_f;   
};
int main(int argc, char** argv) {
    static struct_t* structpointer = NULL;               
    structpointer->int_f = 10;       //тут segmentation fault
    return 0;
}
или даже:
Код
int main()
{
   int *p = NULL;
   *p = 0;
   return 0;
}

просто доступ к объектам, указатель на которые имеет значение NULL, всегда приводит к ошибке сегментации. Именно для этого это значение и придумано.
PM   Вверх
Zerstroer
Дата 17.6.2013, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.8.2007
Где: Алма-Ата

Репутация: 1
Всего: 3



Цитата(bsa @  17.6.2013,  12:51 Найти цитируемый пост)
 доступ к объектам, указатель на которые имеет значение NULL, всегда приводит к ошибке сегментации. Именно для этого это значение и придумано. 

 smile 
Спасибо!


--------------------
In silico
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.