Pointed out by a licensee here:
When reading the `UDataTable, in DataTable::LoadStructData()` the contents of the struct are interpreted[Image Removed], but the size of memory that is allocated and the size of memory that is initialized to zero seem to be different. The memory allocation is done here in `DataTable::LoadStructData()` in DataTable.cpp :
`uint8* RowData = (uint8*)FMemory::Malloc(LoadUsingStruct->PropertiesSize);`
But the memory zero initialization is done in Class.cpp's `UScriptStruct::InitializeStruct()` :
`FMemory::Memzero(Dest, ArrayDim * Stride);`
The stride value is set to `GetStructureSize()`, but the return value of `GetStructureSize` is `Align(PropertiesSize,MinAlignment)`, so it's actually a little larger than the allocated size.
Because of this, the information about the memory allocation gets corrupted.
In order to fix this, I was planning on fixing the allocation part, but would that be correct?
Check with Joe Conley
There's no existing public thread on this issue, so head over toAnswerHub just mention UE-36849 in the post.