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