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

Unreal Engine 5.6 Android平台使用std::stringstream崩溃的解决方法咨询

Unreal Engine 5.6 Android平台使用std::stringstream崩溃的解决方法咨询

大家好,我最近在Unreal Engine 5.6的Android平台上遇到了一个非常奇怪的崩溃问题——桌面端运行代码完全正常,但部署到Android手机上就直接触发致命错误,想请教下有没有遇到过类似问题的朋友能帮忙分析下?

问题复现步骤

我已经把复现路径简化到最清晰的程度了:

  • 安装Unreal Engine 5.6版本
  • 在编辑器中创建**First Person + C++**类型的新项目
  • 在任意会被执行到的代码位置添加以下代码(两种写法都会触发崩溃):
    第一种(std::stringstream写法):
    std::stringstream ss{};
    ss << "someLongStringToPreventShortStringOptimization";
    
    第二种(std::string空对象拼接写法):
    std::string{} + "someLongStringToPreventShortStringOptimization";
    
    但如果是直接构造std::string的写法,运行完全正常:
    std::string{"someLongStringToPreventShortStringOptimization"};
    
  • 将项目打包部署到Android手机上运行,就会立刻触发崩溃

崩溃日志信息

手机端输出的崩溃日志核心提示是内存分配器无法识别指针,完整日志如下:

LogPlayLevel: Error: UAT: 08-01 13:07:09.039 1414 1844 D UE : Fatal error: [File:Runtime/Core/Public/HAL/MallocBinnedCommon.h] [Line: 894]
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : FMallocBinned Attempt to GetAllocationSizeExternal an unrecognized pointer 0x72203668a0
LogPlayLevel: Error: UAT: 08-01 13:07:09.039 1414 1844 D UE : [2025.08.01-11.07.09:039][ 0]Fatal error: [File:Runtime/Core/Public/HAL/MallocBinnedCommon.h] [Line: 894]
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : FMallocBinned Attempt to GetAllocationSizeExternal an unrecognized pointer 0x72203668a0
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x0000007201DCB77C libUnreal.so(0x0000000002AF477C)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x0000007201FB5060 libUnreal.so(0x0000000002CDE060)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x0000007201F7393C libUnreal.so(0x0000000002C9C93C)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x000000720931C4CC libUnreal.so(0x000000000A0454CC)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x000000720276081C libUnreal.so(0x000000000348981C)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x0000007202A4FA78 libUnreal.so(0x0000000003778A78)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x00000072091F375C libUnreal.so(0x0000000009F1C75C)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x00000072091EA5D4 libUnreal.so(0x0000000009F135D4)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.039 1414 1844 D UE : 0x00000072091D8D04 libUnreal.so(0x0000000009F01D04)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.040 1414 1844 D UE : 0x00000072091E6F54 libUnreal.so(0x0000000009F0FF54)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.040 1414 1844 D UE : 0x000000720920BBC4 libUnreal.so(0x0000000009F34BC4)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.040 1414 1844 D UE : 0x000000730EF557C4 libc.so(0x00000000000CF7C4)![Unknown]() []
LogPlayLevel: UAT: 08-01 13:07:09.040 1414 1844 D UE : 0x000000730EEF81AC libc.so(0x00000000000721AC)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: === Critical error: ===
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error:
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: Fatal error: [File:Runtime/Core/Public/HAL/MallocBinnedCommon.h] [Line: 894]
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: FMallocBinned Attempt to GetAllocationSizeExternal an unrecognized pointer 0x72203668a0
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x0000007201DCB77C libUnreal.so(0x0000000002AF477C)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x0000007201FB5060 libUnreal.so(0x0000000002CDE060)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x0000007201F7393C libUnreal.so(0x0000000002C9C93C)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x000000720931C4CC libUnreal.so(0x000000000A0454CC)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x000000720276081C libUnreal.so(0x000000000348981C)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x0000007202A4FA78 libUnreal.so(0x0000000003778A78)![Unknown]() []
LogPlayLevel: Error: UAT: 08-01 13:07:09.040 1414 1844 D UE : [2025.08.01-11.07.09:040][ 0]LogAndroid: Error: [Callstack] 0x00000072091F375C libUnreal.so(0x0000000009F1C75C)![Unknown]() []

我自己的初步推测

从错误日志来看,问题出在Unreal的FMallocBinned内存分配器上,它无法识别std容器动态分配内存时产生的指针地址。我猜可能是因为:

  • Android平台上Unreal默认使用的内存分配器和标准库容器使用的系统malloc/free不兼容
  • 只有当std::string需要动态分配内存(超过短字符串优化的阈值)时才会触发冲突,直接构造的短字符串不需要动态分配,所以能正常运行

想请教大家的问题

  • 有没有朋友在UE5.6的Android平台上遇到过完全相同的崩溃场景?
  • 有没有代码写法或者项目配置上的解决方案?比如让标准库容器强制使用Unreal的内存分配器?
  • 这会不会是UE5.6 Android平台的已知bug?有没有官方的修复思路或者临时 workaround?

麻烦各位大佬帮忙看看,万分感谢!😀

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 06:18:02