Ошибка сегментации При доступе к функциональной статической структуре через возвращенный указатель

У меня есть следующая структура:

struct sys_config_s
{
  char server_addr[256];
  char listen_port[100];
  char server_port[100];
  char logfile[PATH_MAX];
  char pidfile[PATH_MAX];
  char libfile[PATH_MAX];
  int  debug_flag;
  unsigned long connect_delay;
};
typedef struct sys_config_s sys_config_t;

У меня также есть функция, определенная в статической библиотеке (давайте назовем ее A.Lib):

sys_config_t* sys_get_config(void)
{
  static sys_config_t config;
  return &config;
}

У меня есть программа (давайте назовем это B ) и динамическая библиотека (давайте назовем ее). Оба B и C ссылки с A.Lib. При выполнении B открывается C через DLOPEN () , а затем получает адрес в функцию C Func () по вызову DLSIM () .

void func(void)
{
  sys_get_config()->connect_delay = 1000;
}

Приведенный выше код является телом функции функции CS () , и она создает неисправность сегментации при достижении. SegFault происходит только при запуске GDB .

Почему это происходит?

Редактировать: Создание SYS_CONFIG_T CONFIG Глобальная переменная не помогает.

9
задан MasterM 12 September 2011 в 17:41
поделиться