odysset
@odysset
Программист, немного музыкант и bmx'ер

Почему данный вызов функции realloc генерирует исключение?

Собственно в чем причина? Начиная со второй строки
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);
		}

5b8343774383c981693935.png

Если код прошел до второй строки, то все указатели в норме. Нечто аналогичное проходит нормально, например вот такая конструкция не вызывает ошибок.
g_Clump->GeometryList.Geometry = (DFFGeometry*)realloc(g_Clump->GeometryList.Geometry, g_Clump->GeometryList.GeometryCount);


Попытался поиграться с malloc, изменяя размер выделяемой памяти, в байт он готов выделить, а когда запросил 40, ему стало плохо и я получил исключение, куда тут копать то можно? что за дичь?
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
куда тут копать то можно? что за дичь?

Вероятно, поломал кучу. Копать в сторону валидации использования памяти -- valgrind, asan, duma, electric fence, итд.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы