C 中指向已释放内存的指针
删除指针后,引用同一对象的其他指针的有效性会出现混乱。本文旨在阐明 C 中的这种行为。
考虑以下代码:
<code class="cpp">A* a = new A(); A* b = a; delete a; A* c = a; // Illegal (C++11) A* d = b; // Debatable legality // Points to deallocated memory, Undefined in C++11 A* aAddr = &a;</code>
C 11 行为:
C 14 行为:
根据 C 11 标准,使用无效的指针值(包括复制它)会导致未定义的行为。在 C 14 中,此类操作具有实现定义的行为,这意味着该行为可能会因不同的编译器和操作系统而异。
因此,在 C 11 和 C 14 中,避免使用已被实现的指针至关重要。已删除或引用已释放的内存。这样做可能会导致不可预测和潜在错误的行为。
以上是在 C 中删除一个引用同一对象的指针后会发生什么?的详细内容。更多信息请关注PHP中文网其他相关文章!