member access within misaligned address到底錯在哪?

今天刷力扣題目又出現了member access within misaligned address這個錯誤
字面意思是:未對齊地址內的成員訪問。
先貼上我的代碼

struct TreeNode {
        int val;
        int num;
        TreeNode* left;
        TreeNode* right;
        TreeNode(int x) : val(x), num(1), left(NULL), right(NULL) {}
    };
    
    TreeNode* root = NULL;
    KthLargest(int k, vector<int>& nums) {
        for (int i = 0; i < nums.size(); i++) {
            insert(nums[i], root);
        }
        kk = k;
    }
    
    void insert(int val, TreeNode* root) {
        if (root == NULL) {
            root = new TreeNode(val);
            return;
        }
        root->num += 1; ——————————————————————錯誤提示在這裏
        if (root->val > val) {
            if (root->left) {
                insert(val, root->left);
            } else {
                root->left = new TreeNode(val);
            }
        } else {
            if (root->right) {
                insert(val, root->right);
            } else {
                root->right = new TreeNode(val);
            }
        }
        return;
    }

仔細看了一下代碼,發現我聲明root的時候沒有初始化,所以root->num的訪問是無意義的。將root初始化爲TreeNode* root = NULL;即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章