我不明白为什么将值重新分配给* p会显示错误。我们已删除了在运行时创建的资源。
window.onclick = function(event) {
if (!event.target.matches('.Sortby')) {
let arrow = document.getElementsByClassName("up");
for (let i = 0; i < arrow.length; i++) {
var changearrow = arrow[i];
if (changearrow.classList.contains('down')) {
changearrow.classList.remove('down');
}
}
var dropdowns = document.getElementsByClassName("sortbybuttons");
for (let j = 0; j < dropdowns.length; j++) {
var openDropdown = dropdowns[j];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
答案 0 :(得分:3)
在您调用p
后,解除引用 delete p;
上的行为未定义。不要这样做。这很容易。现在更难了一点:在调用p
之后读取的行为delete
(更不用说解除引用它)的行为也是未定义的!所以也不要这样做。 (非正式地,您将指针重新置于未初始化状态。)
*p = &b;
是一个错字。您需要p = &b;
将指针p
分配到b
的地址<{1}}。如果你修正了这个拼写错误,你可以自由阅读p
的值,再次取消引用它。
答案 1 :(得分:0)
除了删除指针并且没有给它一个新地址之外,目前你正在尝试将__str__
指针的值赋给int的内存地址。