必要なすべてのメモリを割り当て、データを読み込み、それに応じてリンクリストを作成する関数を作成する必要があります。 A = malloc(sizeof(Order))でメモリリークが発生しました。それはうまく動作しますが、私にメモリリークを与えます。誰も助けることができますか?どのように私はこのメモリリークをcで修正するのですか
typedef struct o_
{
int ID; //the order number
int daysInQueue; //the number of days old the order is
struct o_* nextOrder; //to the next order in the list
} Order;
Order** importLists(char* filename)
{
FILE *fptr = fopen(filename,"r");
Order ** b = malloc(sizeof(Order*)*4);
int i;
for (i=0; i< 4; i++)
{
b[i]=NULL;
}
Order* A;
while (A != NULL)
{
A = malloc(sizeof(Order));
fscanf(fptr,"%d%d%d", &A ->ID, &A -> daysInQueue, &i);
if (feof(fptr))
{
break;
}
A-> nextOrder = b[i];
b[i]=A;
}
fclose(fptr);
return b;
}
問題を解決する方法を知りたい場合は、完全なコードを投稿する必要があります。 –
「Order * A; while(A!= NULL) 'はかなり疑わしいです。宣言されたときに' A'が 'NULL'である可能性が非常に高いからです。代わりに 'do'-'while'ループを使うか、無限ループ(' while(TRUE) ')と' break'を使います。ありがとう。 –
ありがとう。私はそのようにして32バイトを取り除きました。そして1つのノードメモリリークはまだ16バイト残っています。 –