gpt4 book ai didi

c++ - gcc std::regex 与 -fpack-struct 段错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:40 26 4
gpt4 key购买 nike

考虑以下简单的 C++ 程序

#include <iostream>
#include <regex>
int main(int argc, char * argv[])
{
std::regex foobar( "[A]+");

return 0;
}

当使用 -fpack-struct=1 编译时出现段错误

g++-5 -std=gnu++14 ./fpack_regex.cpp -fpack-struct=1 -o a.out && a.out
Segmentation fault (core dumped)

同时

g++-5 -std=gnu++14 ./fpack_regex.cpp -o a.out && a.out

工作得很好。

关于为什么 pack-struct=1 选项可能导致此失败的任何线索?

最佳答案

开关 -fpack-struct 可能非常危险,例如。请参阅有关它的 gcc 文档警告:

我看到的主要问题是您的代码与标准库不是二进制兼容的(它通常不是用打包的结构编译的),因此调用(通过传输结构)它可能会失败(正如它们实际做的那样)。

建议不要使用此开关打包所有结构,但如果您需要打包结构,请仅打包您需要的结构。我还读到重新编译 libstd 和/或您使用相同 fpack-struct 的库可能会有所帮助,但无论如何这是一个冒险的选择。

一些信息也在这里(关于 fpack-struct 的旧 gcc 错误),它已过时,但可能有用:https://gcc.gnu.org/bugzilla/show_bug.cgi?id=14173

关于c++ - gcc std::regex 与 -fpack-struct 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46497591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com