Получение ошибки сегментации при печати указателя

Во время выполнения этого кода C, я получаю Segmentation Fault .

#include<stdio.h>

int main(){
    int l1=5, l2=5;
    int* c=(int*)malloc(sizeof(int)*(l1+l2));
    int* c_ptr=&c;
    *c_ptr=6;
    c_ptr++;
    *c_ptr=7;
    for(int i=0;i<=3;i++){
        printf("%d ", *(c+i));
    }
}

Я хочу знать, почему он показывает Segmentation Fault . Кто-нибудь может помочь в этом?

Всего 1 ответ


Причина в том, что вы разыменовываете адрес 6, затем 10, затем 14, а затем 18, к которым у вас нет легальности доступа. Т.е. вы не можете получить доступ к этим адресам с помощью * оператора.

Просто поменяй

int* c_ptr=&c;

в

int* c_ptr=c;

и это не вызовет ошибки сегментации.