Получение ошибки сегментации при печати указателя - PullRequest
0 голосов
/ 10 февраля 2020

При выполнении этого 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 Ответ

0 голосов
/ 10 февраля 2020

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

Просто измените

int* c_ptr=&c;

на

int* c_ptr=c;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...