Ошибка чтения памяти для 0x4e00000000 в конце кода, когда номера массива генерируются случайным образом - PullRequest
0 голосов
/ 24 марта 2020

Поэтому я пытаюсь применить (в C) случайно сгенерированные числа к массиву, который будет отсортирован с помощью быстрой сортировки. Нет проблем с генерацией чисел и сортировкой, но в конце кода у меня есть ошибка, сообщающая, что была проблема с чтением памяти.

#include <stdlib.h>
#include <time.h>


void generate(int AR[], int n){



    srand((unsigned int) time(NULL));
    for(int i=0;i<n;i++){
        int num = (rand()%100);
        AR[i]=num;

    }
    }// end of generate

void swap(int *a, int *b){
    int temp=*a;
    *a=*b;
    *b=temp;
} //end of  swap


int sort(int AR[], int beg, int end){
    int pivot= AR[end];
    int a=(beg-1);

    for(int i=beg; i<=end-1; i++){

        if(AR[i]<pivot){
            a++;
            swap(&AR[i], &AR[a]);
        }//end of if
        } //end of i<end-1
    swap(&AR[a+1], &AR[end]);
    return (a+1);

} //end of sort


void Quick_sort(int AR[], int beg, int end){

    if(beg<end){

        int placed_PV=sort(AR, beg, end);

        Quick_sort(AR, beg, placed_PV-1);
        Quick_sort(AR, placed_PV+1, end);

    } //end of  if beg<end
    }//end of  Quick sort




int main(){


    int AR[]={};
    int n=10;


    generate(AR, n);

    printf("\n");
    printf("Nieposortowana tablica:");
    for(int i=0; i<n;i++)
                printf("%d,", AR[i]);
    printf("\n");

    Quick_sort(AR, 0, n-1);

    printf("Posortowana tablica:");
    for(int i=0;i<n;i++)
        printf("%d,", AR[i]);
    printf("\n");
                                        } //end of code  

сообщение об ошибке error: memory read failed for 0x4e00000000

Thread 1: EXC_BAD_ACCESS (code=1, address=0x4e00000000)

Где я допустил ошибку?

1 Ответ

1 голос
/ 24 марта 2020

у вас есть это:

    int AR[]={};
    int n=10;

, что неверно, поскольку этот массив AR имеет только один элемент (из-за этой инициализации), поэтому вы не можете получить доступ к десяти его элементам.

исправить, как это

int AR[10]={0};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...