我们在使用PIX For Windows分析UE 5.3.2的内存时发现一个非常奇怪的问题。
使用**-ansimalloc**启动游戏,在一个静态场景加载完之后,PIX显示FFileIoStore::GetCompletedRequests()中下图申请的内存有泄露:
[Image Removed]
为此我在这里和Free的地方加了日志,打印申请和释放时的大小、内存地址段:
[Image Removed]
[Image Removed]
跑测下来发现日志中Malloc/Free都是成对的,并没有泄露的情况。看了引擎FMallocAnsi的实现也没什么特别,都是非常正常的系统调用。
然后我自己写了个简单的C++ Console项目,在其中用多个线程申请/释放内存(malloc/free),再用PIX分析结果是正常的,没有上面这种误报。
请问是UE有什么隐藏的机制导致这种情况发生吗?