具有运行时分配的指针

时间:2018-04-30 15:27:36

标签: c++

我不明白为什么将值重新分配给* 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');
     }
   }
 }
}

2 个答案:

答案 0 :(得分:3)

  1. 在您调用p后,解除引用 delete p;上的行为未定义。不要这样做。这很容易。现在更难了一点:在调用p之后读取的行为delete(更不用说解除引用它)的行为也是未定义的!所以也不要这样做。 (非正式地,您将指针重新置于未初始化状态。)

  2. *p = &b;是一个错字。您需要p = &b; 将指针p分配到b的地址<{1}}。如果你修正了这个拼写错误,你可以自由阅读p 的值,再次取消引用它。

答案 1 :(得分:0)

除了删除指针并且没有给它一个新地址之外,目前你正在尝试将__str__指针的值赋给int的内存地址。