You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启编译优化后函数内声明ifstream触发段错误main中声明正常

你的代码不存在语法或逻辑错误,完全符合C++标准要求,该问题属于你所用的MinGW-W64 GCC 8.1.0版本的已知编译优化缺陷。

该bug的触发条件为x86_64架构的MinGW-W64 8.x系列编译器,开启-O1及以上优化等级、使用C++17及更高标准时,std::fstream系列对象的构造过程中栈对齐处理错误,访问了未对齐的内存地址触发段错误。-O0优化等级下不会对栈布局做激进调整,因此不会触发崩溃。

可通过以下几种方案解决该问题:

  • 升级MinGW-W64编译器到9.0及以上版本,该版本已正式修复此问题
  • 若暂时无法升级编译器,可在编译参数中添加-mstackrealign选项强制栈对齐,可在保留优化等级的前提下规避崩溃
  • 临时将编译标准从C17降级为C14,也可避开该优化缺陷

内容的提问来源于stack exchange,提问作者Archie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:36:05