Эта строка:
memset(pattern, 0, sizeof(regex) * 2);
повреждает каждый из regex
объектов в массиве pattern
.
Не используйте memset
для инициализации не POD-объектов, таких как regex
.Использование memset
здесь приводит к неопределенному поведению .
Самое простое решение - просто удалить эту строку.Сам массив автоматически по умолчанию инициализирует записи regex
, поэтому нет необходимости (ошибочно) пытаться "инициализировать нулем" объект regex
.