Вы не возвращаете значение из Next_Permutation
.Невозможность вернуть значение из любой функции, но main
вызывает неопределенное поведение , где компилятор и программа могут делать все, что им нравится.Мой компилятор Solaris отказывается принимать программу, в то время как мой компилятор Linux компилирует программу, но затем происходит сбой программы, поскольку free
обнаружил неверный указатель в какой-то момент.Оба являются допустимыми способами лечения чего-то, что не определено.
Когда у вас неопределенное поведение, обычно не стоит прилагать много усилий, чтобы выяснить, почему ваша программа ведет себя странно, потому что то, что вы видите, не обязательновоспроизводимый кем-либо еще, и, возможно, даже не воспроизводимый вами .Убедитесь, что у вас есть действующая программа, и затем начните отладку.Хотя вполне возможно, что у вас законно заканчивается память, более вероятно, что исключение выдается при попытке скопировать что-то, что вообще не является допустимым объектом.
Ваш компилятор, вероятно, предлагает некоторую диагностику, но вам может потребоваться запросить их при запуске.Если вы используете g ++, обязательно включите опцию -Wall
, которая включает «все» предупреждения.(Есть несколько неясных, которые не включены, но вам, как правило, не нужно беспокоиться о них.)