无法分配动态内存分段错误

时间:2019-09-12 22:36:03

标签: c arrays pointers dynamic malloc

我正在尝试使用函数将内存分配给数组。  我已经通过引用传递了指针(使用双指针)。代码可以编译,但是在运行时会抛出分段错误。

#include<stdio.h>
#include<stdlib.h>
//funct to read array 

int read(int **v){
    int n,ele;
    printf("enter number of elements \n");
    scanf("%d",&n);
    //p=(int*)malloc(n*(sizeof(int));
        *v= (int*)malloc(n * sizeof(int)); 
    for(int i=0;i<n;i++)
    {
        //printf("enter %d th element \n",i);
        scanf("%d",&ele);
        *v[i]=ele;
    }
    return n;
}


void main()
{
    int *p=NULL;
    int sz=read(&p);
    for(int i =0;i<5;i++)
    {
        printf("%d",p[i]);
    }
}

1 个答案:

答案 0 :(得分:3)

这是错误:*v[i]=ele;。在这种情况下,您首先要下标数组,然后再取消引用它。 https://en.cppreference.com/w/c/language/operator_precedence。将其更改为(*v)[i]=ele;即可使用。

UPD。请不要忘记free(p),以避免内存泄漏。