У меня есть проблема с этим кодом:Передача массива функционировать для выделения памяти
Main():
...
int main()
{
int i=0, choice=0;
int *array_val=NULL;
while((choice=menu_sort())!=9)
{
switch(choice)
{
case 1:
i=ins_val(&array_val, i);
break;
....
я называю функцию ins_val()
из другого источника:
int ins_val(int **array_val, int i)
{
int j=0, add=0, k=0;
system("cls");
printf("Number to add: ");
scanf("%d", &add);
i++;
reall(array_val, i);
*array_val[i-1]=add;
for (j=(i-1); j>0; j--)
{
if (*array_val[j]<(*array_val[j-1]))
{
k=(*array_val[j-1]);
*array_val[j-1]=(*array_val[j]);
*array_val[j]=k;
}
}
return i;
}
и
void reall(int **array_val, int i)
{
int *arr=NULL;
arr=malloc(sizeof(int)*i);
int j=0;
for (j=0; j<i-1; j++)
{
arr[j]=(*array_val[j]);
}
int size=(sizeof(int)*i);
free(*array_val);
(*array_val)=(int*)malloc(size);
if ((*array_val)!=NULL)
{
for (j=0; j<i-1; j++)
{
(*array_val[j])=arr[j];
}
free(arr);
}
else
{
...
}
return;
}
Я хочу создать динамический массив, где я могу сохранить значения и упорядочить их.
Моя проблема заключается в том, что распределение памяти, потому что я могу сохранить только одно значение в array_val
массиве, даже если с malloc()
я выделяю sizeof(int)*i
, поэтому, когда я пытаюсь сохранить второе значение, я получаю сообщение об ошибке.
'* array_val [j]' -> '(* array_val) [j]' – BLUEPIXY