Собственно в чем причина? Начиная со второй строки
if ((rwOBJECT_VERTEX_UV & g_Clump->GeometryList.Geometry[g_Clump->GeometryList.GeometryCount - 1].Data.Header.Flags1) == rwOBJECT_VERTEX_UV){
g_Clump->GeometryList.Geometry[g_Clump->GeometryList.GeometryCount - 1].Data.UV =
(Vector2f*)realloc(
g_Clump->GeometryList.Geometry[g_Clump->GeometryList.GeometryCount - 1].Data.UV,
sizeof(Vector2f)*g_Clump->GeometryList.Geometry[g_Clump->GeometryList.GeometryCount - 1].Data.Header.VertexCount
);//SetLength(UV, Header.VertexCount);
fread(&g_Clump->GeometryList.Geometry[g_Clump->GeometryList.GeometryCount - 1].Data.UV[0],
1,8* g_Clump->GeometryList.Geometry[g_Clump->GeometryList.GeometryCount - 1].Data.Header.VertexCount,
stream);
}
Если код прошел до второй строки, то все указатели в норме. Нечто аналогичное проходит нормально, например вот такая конструкция не вызывает ошибок.
g_Clump->GeometryList.Geometry = (DFFGeometry*)realloc(g_Clump->GeometryList.Geometry, g_Clump->GeometryList.GeometryCount);
Попытался поиграться с malloc, изменяя размер выделяемой памяти, в байт он готов выделить, а когда запросил 40, ему стало плохо и я получил исключение, куда тут копать то можно? что за дичь?