尝试获取指向int的指针时出现分段错误

时间:2013-04-07 04:12:33

标签: c segmentation-fault

尝试运行下面的代码时出现分段错误

#include <stdio.h>


int main(){

    int* tes1;
    int* tes2;

    *tes1=55;

    *tes2=88;



    printf("int1 %p int2 %p \n",tes1,tes2);

    return 0;
}

为什么会这样?

2 个答案:

答案 0 :(得分:3)

您需要分配指针,否则它们指向垃圾内存:

int* tes1; //random initial value
int* tes2; //random initial value

为了使它们指向可分配的内存,请使用malloc功能:

int* tes1 = malloc(sizeof(int)); //amount of memory to allocate (in bytes)
int* tes2 = malloc(sizeof(int));

然后你安全地使用指针:

*tes1=55;
*tes2=88;

但是当你完成后,你应该使用free函数释放内存:

free(tes1);
free(tes2);

这会将内存释放回系统并防止内存泄漏。

答案 1 :(得分:1)

您正在声明指针,然后尝试定义指针指针的值

#include <stdio.h>

int main(){

    int* tes1;
    int* tes2;
    tes1=55; //remove the * here
    tes2=88;
    printf("int1 %p int2 %p \n",tes1,tes2);

    return 0;
}