今天刷力扣題目又出現了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;
即可