同步の十大未解之谜(一):UE new内存分配崩溃(未解决)

内容纲要

我在函数中使用了

// Frame 不为野指针或 nullptr
uint8* Data = new uint8[Frame->nb_samples * 4 * 2];

后,UE调用了new运算符重载函数,重载函数执行了

FMallocMimaloc::Malloc(SIZE_T Size, uint32 Alignment)

此函数调用了 TryMalloc(Size, Alignment) 后。
调用栈显示在 return NewPtr; 的时候发生报错,原因未知。


同时我使用

TArray<uint8> Data;
Data.Init();
Data.SetNumZeroed();

等函数,在为TArray分配内存时依然会导致程序崩溃。

最后我使用了 FMemory::Malloc() 成功进行了内存分配并且没有崩溃。


猜想一:由于未知的内存分配问题导致崩溃,但是FMemory使用了相较于FMalloc更高级的内存分配机制和抽象管理,让内存分配变得更安全了。(待翻看源码验证)

3 thoughts on “同步の十大未解之谜(一):UE new内存分配崩溃(未解决)

发表回复

同步Schの秘密防空洞