LeetCodeデザインのツイートエラー

ダブルフリー

デザインさえずり----構造ポインタをクリアするとき:

...
if (obj && obj->tweet) free(tweet);
if (obj && obj->user) free(user);
if(obj) free(obj);
...

その中で、tweetとobjは構造体ポインターであり、tweetはリンクリストの先頭ですが、userは構造体ポインターの配列です。

#define MAX_SIZE 1024

struct User {
    int userid;
    int followee[MAX_SIZE];
};

struct tweet {
    int userid;
    int tweetid;
    struct tweet *next;
};

// 改用User数组保存用户及其关注的人
typedef struct {
    struct User *user[MAX_SIZE];
    struct tweet *tweet;
} Twitter;

静的配列はプログラムの最後で自動的にクリアされるため、free(obj->user)実際に実行する必要があると推測され、free(obj)二重解放の状況になります。
ので*user[1024]静的配列、それを使用すべきではありませんfreeが、エラーの様々な。
最初に行われた場合free(obj->tweet)、その後free(obj->user)があるでしょうヒープ使用-後-として無料
構造が定義されている場合は、struct Tweet *tweet;場所struct User *user[MAX_SIZE];の前では、発生したmalloc関数はなかった住所に無料試みます )(

おすすめ

転載: www.cnblogs.com/AIxiaodi/p/12702824.html