Проблема здесь:
memset(&handler,0,sizeof(handler));
Я предполагаю, что вы хотите обнулить структуру, но handler
является указателем, поэтому, когда вы говорите &handler
, вы берете указатель на указательи обнуление его.Так эффективно вы делаете
handler = NULL;
А затем разыменование указателя вызывает проблему.Если вы хотите обнулить структуру, вам нужно сделать
memset(handler,0,sizeof(*handler));
Тогда, конечно, вам не нужно устанавливать указатель внутри на NULL отдельно.