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 to Questions & Answers just mention UE-36849 in the post.