1. 程式人生 > >關於C語言free函式使用失敗的原因

關於C語言free函式使用失敗的原因

#include"stdio.h" #include"stdlib.h" typedef int data; #define dc 100 typedef struct{ int size; data a[dc]; }sequence_list; sequence_list * sort(sequence_list one,sequence_list two) { int i=0,j=0,k=0; sequence_list p; p.size=0; while(i!=one.size&&j!=two.size) { if(one.a[i]<=two.a[j]) p.a[k++]=one.a[i++]; else  p.a[k++]=two.a[j++]; } while(i!=one.size) p.a[k++]=one.a[i++]; while(j!=two.size) p.a[k++]=two.a[j++]; p.size=k; return (&p); } int main() { int n; sequence_list t1,t2; sequence_list *all; all=(sequence_list *)malloc(sizeof(sequence_list)); all->size=0; printf("輸入第一行\n"); scanf("%d",&t1.size); for(n=0;n<t1.size;n++) scanf("%d",&t1.a[n]); printf("輸入第二行\n"); scanf("%d",&t2.size); for(n=0;n<t2.size;n++) scanf("%d",&t2.a[n]); all=sort(t1,t2); for(n=0;n<all->size;n++) printf("%5d",all->a[n]); printf("\n"); free(all); return 0; }

在程式碼使用free後,執行失敗;刪除後執行成功