前提・実現したいこと
C言語で連結リストへの挿入関数を作成したのですが、実行するとThread 1: EXC_BAD_ACCESS (code=1, address=0x0)のエラーが出で実行できません。
そもそもの挿入関数の作成が回りくどくわかりづらいものかと思いますが、何卒よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージ Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
該当のソースコード
C
1ソースコード #include <stdio.h> 2#include <stdlib.h> 3 4typedef struct list{ 5 struct list *next; 6 int value; 7}LIST; 8 9void insert(LIST header,int n,int data) /*header,何番目に何のデータを挿入するかを渡す*/ 10{ 11 LIST *p,*new; 12 int count=0; 13 14 p=header.next; 15 while (p!=NULL && count<n){ 16 p=p->next; 17 count++; 18 } 19 20 if ((new=malloc(sizeof(LIST)))==NULL){ 21 printf("メモリが足りません。"); 22 exit(1); 23 } 24 new=(LIST *)malloc(sizeof(LIST)); 25 new->next=p->next; /*ここにエラーが表示されます。*/ 26 p->next=new; 27 new->value=data; 28 29 for (int i=0;p->next==NULL;i++){ 30 printf("%d...%d/%p",i,p->value,p->next); 31 } 32 free(new); 33 34} 35 36int main(void) 37{ 38 int select,n,data; 39 40 LIST header; 41 header.next=NULL; 42 43 printf("いずれの関数を利用しますか?\n0..挿入/1..削除/2..分断/3..連結:"); 44 scanf("%d",&select); 45 46 switch(select){ 47 case 0: 48 printf("何番目に挿入しますか?:");scanf("%d",&n); 49 printf("挿入するデータを入力してください。:");scanf("%d",&data); 50 51 insert(header,n,data); 52 53 break; 54 55 56 case 1: 57 break; 58 59 case 2: 60 break; 61 62 63 case 3: 64 break; 65 } 66 return 0; 67 68} 69 70 71 72 73
試したこと
ソースコード内にあるようにmalloc()でメモリを確保してみましたが変化ありません。
補足情報(FW/ツールのバージョンなど)
Xcode Version 11.2 (11B52
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/04 01:18