【发布时间】:2022-09-16 19:55:59
【问题描述】:
我正在使用 VS 2022 社区版 (v17.3.3) 使用 C++ (v14.3 - 最新 C++ 的功能) 构建 wxWidgets 应用程序 (v3.2.0)。 Windows SDK 使用的是最新安装的 (10.0.22621)。该项目还使用 C++ 模块。
Debug 构建成功,但是当我随机运行项目的 exe 文件时,它会引发异常(访问冲突读取 0xFFFFFF (ucrtbased.dll)) 在exe_common.inl在以下行:
__scrt_current_native_startup_state = __scrt_native_startup_state::initialized;
经过几次编译(只需进行微小的更改即可触发编译),它成功并且 exe 正确运行。
我想知道是否有任何设置可能导致此随机错误。顺便说一句,我使用的是 Win11,但同样的事情也发生在 Win10 上。
提前致谢。
编辑1:
该项目正在使用 boost 库,并且在启动时 boost/json (boost/json 也用于项目的其他部分)。调试器显示,在以下行之后发生了上述错误:
static allocator_arg_t allocator_arg = BOOST_CONTAINER_DOC1ST(unspecified, *std_allocator_arg_holder<>::dummy);
【问题讨论】:
-
您是否尝试过使用您的 debugger 调查此问题?如果没有,那么这应该是你要做的第一件事。
-
是的,这就是调试器在
__scrt_current_native_startup_state = __scrt_native_startup_state::initialized;处停止的地方 -
如果您展开堆栈框架(在堆栈框架窗口中),您会返回您的代码吗?如果是这样,请检查该堆栈帧中的变量。
-
@RichardCritten:我认为这个问题已经开始,因为切换到 C++ 中的模块并且目前正在尝试禁用“多处理器编译”,到目前为止问题还没有发生。
-
@macroland,您可以尝试使用早期版本的 MSVC 构建吗?我想最近有一个帖子证明这个版本是错误的......
标签: c++ visual-studio wxwidgets