Переполнение буфера кучи с помощью std::sort и пользовательской функции сравнения ⇐ C++
-
Гость
Переполнение буфера кучи с помощью std::sort и пользовательской функции сравнения
Я пытался решить алгоритмическую задачу и столкнулся с проблемой памяти. У меня есть функция под названием longestStrChain, которая является открытым членом класса Solution и фактически решает проблемы. Внутри него есть вызов std::sort с помощью специальной функции compare, которая, похоже, пытается прочитать память за пределами разрешенных границ. Для полного контекста мой код выглядит так:
// заголовки #include #include #include #include #include #include класс Решение { публика: // Вспомогательная функция static bool isPredecessor(std::string word_a, std::string word_b) { for (int i {0}; i < word_a.size(); ++i) { if (word_a != word_b) { return std::hash{}(word_a.substr(i)) == std::hash{}(word_b.substr(i + 1)); } } вернуть истину; } // Решение проблем int longestStrChain(std::vector&words) { // Кажется, проблема в этой строке (лямбда-функция) std::sort(words.begin(),words.end(), [](std::string a, std::string b) -> bool { return a.size()
Я пытался решить алгоритмическую задачу и столкнулся с проблемой памяти. У меня есть функция под названием longestStrChain, которая является открытым членом класса Solution и фактически решает проблемы. Внутри него есть вызов std::sort с помощью специальной функции compare, которая, похоже, пытается прочитать память за пределами разрешенных границ. Для полного контекста мой код выглядит так:
// заголовки #include #include #include #include #include #include класс Решение { публика: // Вспомогательная функция static bool isPredecessor(std::string word_a, std::string word_b) { for (int i {0}; i < word_a.size(); ++i) { if (word_a != word_b) { return std::hash{}(word_a.substr(i)) == std::hash{}(word_b.substr(i + 1)); } } вернуть истину; } // Решение проблем int longestStrChain(std::vector&words) { // Кажется, проблема в этой строке (лямбда-функция) std::sort(words.begin(),words.end(), [](std::string a, std::string b) -> bool { return a.size()
Мобильная версия