Ошибка сегментации возникает в программе иногда, но не всегда. Как мне это исправить? - PullRequest
1 голос
/ 28 марта 2012

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

Пожалуйста, помогите мне в этом.и я также попробовал отладчик GDB, но не смог решить проблему.

Ответы [ 3 ]

4 голосов
/ 28 марта 2012
(double *) malloc(n * sizeof(int));

Это не правильно.Если вы хотите выделить место для n double номеров, используйте malloc(n * sizeof(double)).

2 голосов
/ 28 марта 2012

когда n = SIZE или даже близко к значению SIZE, это приведет к увеличению объема используемой памяти, что может привести к переполнению памяти и аварийному завершению программы, поскольку вы выполняете malloc(n * sizeof(int *)) n раз!так что это будет похоже на 200000 выделение памяти размером 200000 * sizeof(int) каждый.

0 голосов
/ 20 января 2013

Быстрая сортировка, как известно, хитрая. В вашем коде ничто не мешает i и j отойти от left и right, поэтому они очень хорошо могут отклониться от вашего массива.

...