Comments 2
Исправить это можно, удалив лишнюю инициализацию, если она не нужна, или заменив индекс массива на последующий, – это уже зависит от значения переменной count.
Здесь, на самом деле, куда более странный кусок. По самому коду предполагается, видимо, что авторы хотят создать и проинициализировать массив размером count * 3 в виде, соответственно, стека длины count из трёхмерных векторов. Вот только создают они на самом деле стек длины count * 3:
template<class T>
dgStack<T>::dgStack (dgInt32 size)
:dgStackBase (dgInt32 (size * sizeof(T)))
{
m_size = size;
}После чего заполняют только первую треть полученной области памяти. Используются тоже только первые count элементов:
for (dgInt32 i = 0; i < count; i ++) {
dgVector p1 (tmp[i] + step);
dgVector p2 (tmp[i] - step);
// используем p1 и p2
}Выглядит так, как будто автор обсуждаемого кода попросту неправильно понял использование конструктора dgStack и указал размер искомой области в виде числа элементов внутренних векторов (тогда как правильно — в виде числа самих векторов).
Ну и да, "заменять индекс массива на последующий" (2 на 3, соответственно) здесь именно что необходимо, т.к. dgVector — это на самом деле вообще четырёхмерный вектор, c компонентами [x, y, z, w]:
DG_INLINE dgVector(dgFloat32 val)
:m_x(val), m_y(val), m_z(val), m_w(val)
{
}и компонента w остаётся неинициализированной (правда, в нынешнем коде она потом всё равно нигде не используется).
Information
- Website
- pvs-studio.ru
- Registered
- Founded
- 2008
- Employees
- 51–100 employees
- Location
- Россия
- Representative
- Андрей Карпов
Повторная проверка Newton Game Dynamics статическим анализатором PVS-Studio