水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
1/1
|
转到
主题:gcc的std::regex实现,容易栈耗尽
楼主
|
z16166
|
2023-03-30 22:00:07
|
只看此ID
我也碰到了,gcc 12.2.0
看起来还没有fix,只能先用别的替代
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86164
--
FROM 221.218.163.*
1楼
|
ylh0315
|
2023-04-01 11:56:16
|
只看此ID
mark
【 在 z16166 的大作中提到: 】
: 我也碰到了,gcc 12.2.0
: 看起来还没有fix,只能先用别的替代
:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86164
--
FROM 221.221.52.*
2楼
|
z16166
|
2023-04-01 14:35:31
|
只看此ID
我用的正则式是R"((\w+://)?([^:/]+)(:\d+)?(/.*))",拆分简单url的。
url长度有五六百时就会崩,不过单独的小demo并不崩,应该是大点的程序的栈占用更容易到默认的1MB。
那个bug里说的是.*的递归导致(可能)。
【 在 ylh0315 的大作中提到: 】
: mark
--
FROM 221.218.163.*
3楼
|
ylh0315
|
2023-04-01 14:48:25
|
只看此ID
嗯。
多年前,我的一个程序是莫名其妙的栈不够,要设置很大的栈才能运行,一直没搞明白哪里的问题。是使用REGEX的。
【 在 z16166 的大作中提到: 】
: 我用的正则式是R"((\w+://)?([^:/]+)(:\d+)?(/.*))",拆分简单url的。
: url长度有五六百时就会崩,不过单独的小demo并不崩,应该是大点的程序的栈占用更容易到默认的1MB。
: 那个bug里说的是.*的递归导致(可能)。
: ...................
--
FROM 221.221.52.*
4楼
|
toutouqi
|
2023-04-05 11:10:34
|
只看此ID
以前用vs也遇到栈不够的问题,同样的正则换perl就毫无问题。
【 在 z16166 的大作中提到: 】
: 我也碰到了,gcc 12.2.0
: 看起来还没有fix,只能先用别的替代
:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86164
--
FROM 123.123.42.*
5楼
|
z16166
|
2023-04-05 12:19:13
|
只看此ID
跟vs版本应该有关系,有些正则式实现可能不是递归实现的
这个正则式我先是用vs2019测试没问题,拿到gcc上就栈耗尽了
【 在 toutouqi 的大作中提到: 】
: 以前用vs也遇到栈不够的问题,同样的正则换perl就毫无问题。
--
修改:z16166 FROM 221.218.163.*
FROM 221.218.163.*
6楼
|
stub
|
2023-04-05 12:20:24
|
只看此ID
clang呢
--
FROM 114.254.1.*
7楼
|
z16166
|
2023-04-05 12:24:34
|
只看此ID
没有试,因为我这里macos平台是另一波人写,用不到这个代码。
【 在 stub 的大作中提到: 】
: clang呢
--
FROM 221.218.163.*
8楼
|
poocp
|
2023-04-05 15:09:10
|
只看此ID
我一直用的Boost.Xpressive,还没用过std:regex。xpressive只需要hpp文件,比较省心。
--
FROM 222.212.186.*
9楼
|
z16166
|
2023-05-07 16:47:39
|
只看此ID
又遇到一个regex崩的,递归层次很深,vscode看不到top的stack frame了,不知道是哪个正则式导致的
不过换了vs2022 + visual gdb,能看到top frame,万幸,不然得手动gdb了。
原因是前后加了\s*,去掉就好了
\s*XXXX\s* -> XXX
--
修改:z16166 FROM 114.240.244.*
FROM 114.240.244.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版