!): это значит переписывать что угодно Более того, я не знаю, в чем проблема: мне нужно проверить, что происходит, просто чтобы выяснить, что происходит, не нужно будет делать такого рода проверки после устранения проблемы. Я рискну забыть обернуть некоторые операции в этой работе, поэтому я не буду этого делать ..

лизовал несколько алгоритмов сортировки (для сортировки целых чисел) в C, тщательно используяuint64_t хранить все, что имеет отношение к размеру данных (таким образом, также счетчики и прочее), поскольку алгоритмы должны быть проверены также с наборами данных в несколько гига целых чисел.

Алгоритмы должны быть хорошими, и не должно быть никаких проблем с количеством выделенных данных: данные хранятся в файлах, и мы загружаем только небольшие порции за раз, все работает отлично, даже когда мы забиваем буферы в памяти до любого размера.

Тесты с наборами данных до 4 Гига (то есть 16 ГБ данных) работают нормально (сортировка 4Gint заняла 2228 секунд, ~ 37 минут), но когда мы поднимаемся выше этого значения (т.е. 8 Gints), алгоритм, похоже, не останавливается (это работает уже около 16 часов).

Боюсь, что проблема может быть из-за переполнения целых чисел, возможно, счетчик в цикле хранится в 32-битной переменной, или, возможно, мы вызываем некоторые функции, которые работают с 32-битными целыми числами.
Что еще это может быть?

Есть ли простой способ проверить, происходит ли целочисленное переполнение во время выполнения?

Ответы на вопрос(5)

Ваш ответ на вопрос