-1
當我嘗試並通過func調用realloc時,我的內存填滿了真正的快速,但是當我在main()中執行它時很好。realloc函數正在填充內存,但運行良好main()
你能告訴我爲什麼這樣。非常感謝。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char qp[500];
} xy;
void fl(xy **ptr, int k)
{
int i;
xy *p=NULL;
p=(xy*)realloc(p,k*sizeof(xy));
if(p!=NULL)
*ptr=p;
else
system("pause");
}
int main()
{
FILE *fd;
char tmp[500];
int n,z,h;
xy *p=NULL,*ptr;
p=(xy*)malloc(sizeof(xy));
fd=fopen("files\\dirfl_id.txt","r");
n=0;
while(!feof(fd)) {
fflush(stdin);
fscanf(fd,"%d\t%[^\n]s",&h,tmp);
if(feof(fd))
break;
n++;
fl(&p,n);
strcpy(p[n-1].qp,tmp);
printf("\n%d,%s",n-1,p[n-1].qp);
}
printf("\n\n%s",p[0].qp);
}
當我嘗試運行相同的代碼,但沒有使用函數調用時,它將加載正常。我正在加載的文件大約1mb大,所以它不應該是一個問題。但是它仍會使我的系統崩潰。
刪除'p =(xy *)malloc(sizeof(xy));'at main。 'p =(xy *)realloc(p,k * sizeof(xy));' - >'p =(xy *)realloc(* ptr,k * sizeof(xy));'at f1。 – BLUEPIXY