Я пытаюсь выделить динамическую память для целого ряда целых чисел в массиве, а затем заполнить массив случайными числами. Проблема в том, что если я делаю это для 5 элементов, он работает ... Если я делаю это для большего, он раздавит, и я не знаю, почему. Вот мой код:Проблема с распределением динамической памяти в C
int main()
{
int i;
int* arr=generateRandomInts(50);
printf("Given array:\n");
show(arr,50);
return 0;
}
int* generateRandomInts(int n)
{
int i; int *v;
v=(int*)malloc(n*sizeof(int));
srand(time(NULL));
for(i=1;i<=n;i++)
{
v[i]=rand()%200;
}
return v;
}
void show(int *v,int n)
{
int i;
for(i=1;i<=n;i++)
{
printf("%d ",v[i]);
}
}
'for (i = 1; i <= n; i ++)' change to 'for (i = 0; i
BLUEPIXY
Мне действительно нужно это, чтобы начать с 1, потому что я применяю в этой программе алгоритм сортировки кучи ... но спасибо, что указали это, теперь я знаю, что если я хочу n чисел, я должен выделить память для n + 1. – Sportler
Нет, вам нужны номера 'n', которые вы выделяете для чисел' n'. – juanchopanza