Почему clang-tidy выдает мне неинициализированную ошибку для этого кода на С++?C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Почему clang-tidy выдает мне неинициализированную ошибку для этого кода на С++?

Сообщение Гость »

Я ломаю голову над этим уже несколько часов и до сих пор не понимаю, почему с моим кодом возникла проблема. Я позаботился о том, чтобы инициализировать каждое значение в моем 2D-массиве, поэтому нигде не должно быть ошибок неинициализированного значения!
Примечание. Вместо std я использую другие функции: :min(), потому что мне не разрешено импортировать алгоритм для этого проекта.
Это ошибка, о которой сообщил clang-tidy:

Код: Выделить всё

2nd function call argument is an uninitialized value
Вот мой код (ошибка возникает только в строке 17):

Код: Выделить всё

int** SeamCarver::CarvingSeamVertical() const {
int** energies = new int*[height_];
for (unsigned int row = 0; row < height_; row++) {
energies[row] = new int[width_];
for (unsigned int col = 0; col < width_; col++) {
energies[row][col] = 0;
}
}
for (unsigned int col = 0; col < width_; col++) {
energies[height_ - 1][col] = this->GetEnergy(height_ - 1, (int)col);
}

for (int row = height_ - 2; row >= 0; row--) {
for (int col = 0; col < width_; col++) {
int best = 0;
if (col == 0) { //error occurs here v
best = FindMinTwo(energies[row + 1][col], energies[row + 1][col + 1]);
} else if (col == width_ - 1) {
best = FindMinTwo(energies[row + 1][col - 1], energies[row + 1][col]);
} else {
best = FindMinThree(energies[row + 1][col - 1],
energies[row + 1][col],
energies[row + 1][col + 1]);
}
energies[row][col] = this->GetEnergy(row, col) + best;
}
}
return energies;
}
Я попробовал изменить целые числа на беззнаковые, но ошибка не исчезла. Я также не должен сталкиваться с ошибками доступа за пределами границ, поскольку строка начинается с высоты - 2, а наибольшее значение строки, к которой осуществляется доступ в цикле, - это высота - 1.

Подробнее здесь: https://stackoverflow.com/questions/781 ... his-c-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»