Ошибка времени выполнения: применение ненулевого смещения к нулевому указателю (stl_vector.h) при векторной индексации CC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка времени выполнения: применение ненулевого смещения к нулевому указателю (stl_vector.h) при векторной индексации C

Сообщение Anonymous »

Я решаю проблему "Несоответствие набора" (поиск дубликата и отсутствующего числа) с помощью C++.
Я использую вектор частоты для подсчета вхождений, но получаю ошибку времени выполнения от UndefineBehaviorSanitizer.
Строка 1122: Char 34: ошибка времени выполнения: применение ненулевого смещения 4 к нулевому значению указатель.
СВОДКА: UndefineBehaviorSanitizer: undefined-behaviour

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

class Solution {
public:
vector findErrorNums(vector& nums) {
vector cnt(nums.size, 0);
vector ans;

for (int i = 0; i < nums.size(); i++) {
cnt[nums[i]]++;
if (cnt[nums[i]] > 1) {
ans.push_back(nums[i]);
ans.push_back(nums[i] + 1);
}
}
return ans;
}
};
  • Я проверил, что nums содержит допустимые значения.
  • Я проверил логику цикла, но ошибка выполнения все равно возникает.
Вопрос
  • Почему этот код вызывает ошибку времени выполнения, связанную с std::vector?
  • Как правильно инициализировать и индексировать вектор cnt в этом случае?


Подробнее здесь: https://stackoverflow.com/questions/798 ... -h-in-c-ve
Ответить

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

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

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

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

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