В C ошибка получения: элемент инициализатора не является постоянным

#arrays #c

#массивы #c

Вопрос:

Я хочу использовать очень большой массив, и для этого я попытался динамически создать массив в куче. Но получаю эту ошибку. Пожалуйста, помогите мне запустить это или предложите мне лучший способ работы с большими массивами на c.

 #include <stdio.h>
#include<stdlib.h>

long long *arr = (long long*)malloc(1000000001 * sizeof(long long));

void some_function(long long *arr,long long n)
{
    //
    //
    //
}


int main()
{
    long long n=1000000000;
    
    for(long long i=0;i<n;i  )
    {
        scanf("%ld",arr[i]);
    }
    
    some_function(arr,n);

    return 0;
}
 

Комментарии:

1. Вы не можете вызывать функции за пределами области действия какой-либо другой функции. То есть ваш malloc должен быть внутри какой-то функции.

2. …. и надеюсь, что вы создаете и используете цель x64, иначе это все равно не сработает, даже если вы переместите выделение внутри функции и исправите несоответствующие спецификаторы формата, которые вы используете.