나는 '그래서 내가 할 수있는 내가 표준이없는 (다음 프로그램 중 하나는 정규 표현식을 컴파일 또는 다른 법률로 취급하고 고급 컴파일 할 수없는 불평한다 그림 표현이 엄격하게 합법적인지 여부를 확실히 말하며, 확실히 합리적인 해석이 가능함). 어쨌든, 어떤 g++ (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
에 일이 실행할 때,이 라이브러리의 내장 하드g ++에 정규식 충돌 (아마도 unsyntactic) 표현
*** Error in `./a.out': free(): invalid next size (fast): 0x08b51248 ***
충돌한다는 것입니다.
질문 :
a) 버그입니까? 정규 표현식을 말하는 아마 (아마 잘못) 가정합니다 : : regex 구문을 좋아하지 않는 경우 충돌이 발생할 수 있습니다. (버그가 있다면),보고되었는지 아닌지를 쉽게 알 수있는 방법이 있습니까? (처음 GNU-Land 버그 시스템을 처음 접하는 것이 겁 먹었습니다) b? |
#include <iostream>
#include <regex>
int main(void)
{
const char* Pattern = "^(%%)|";
std::regex Machine;
try {
Machine = Pattern;
}
catch(std::regex_error e)
{
std::cerr << "regex could not compile pattern: "
<< Pattern << "\n"
<< e.what() << std::endl;
throw;
}
return 0;
}
나는 무엇을 할 일은 아무것도 일치하는 것입니다 때문에 당신이, 정규식 파서에 버그가있어 말 것입니다. 파이프 문자는 정규 표현식 파서가 양쪽의 표현식과 일치하도록 지시합니다. 귀하의 경우 오른쪽이 비어 있으므로 아무것도 일치해야합니다. 나는 당신이 pipe charcher를 따라하기를 원했기 때문에 그것을 벗어나서 작동해야한다. – ClasG
Btw, 그냥 정규식 테스트 또는 무엇을하려고합니까? – ClasG
'는'GCC-4.8.1의 된 libstdC++의 비 기능적이었다. LLVM의 libC++를 사용할 수 있다면 [프로그램 작동] (http://coliru.stacked-crooked.com/a/e061305dca0676ba)을 사용하십시오. ? 빈 인수가 엡실론 (제로 문자)와 일치하는 데 사용과'효과적으로하지 않고''연산자를 제공 | - 그렇지 않으면 (너무 오래 켄 톰슨의 멋진 알고리즘이 출판 된 후하지 않음),'는 옛날에 –
Cubbi