0
A
回答
2
当您因任何原因访问“悬挂指针”时,可能发生不良事件,则不会发生任何事情或“事情”可能发生。这一切都取决于发生了什么。例如:
int* intp = new int;
*intp = 8;
delete intp;
std::cout << "intp: " << *intp << std::endl;
这可能会打印8,它可能会打印一些随机数,或者它可能会崩溃。这完全取决于内存被删除后发生了什么。
这就是为什么它被称为未定义的行为。没有办法知道将要发生什么。
0
由于没有真正的方法来预测会发生什么,所以它被称为'未定义'。
访问一个悬挂指针可能会破坏内存,如果你正在写东西,它会崩溃程序,你可能会遇到一个边界错误,或者它可能指向一个新的对象,这取决于它发生了什么你删除了它。
void main(){
char *dp = NULL;
try{
char c;
dp = &c;
}
catch(...){
printf("ex thrown");
}
/* c falls out of scope */
/* dp is 'now' a dangling pointer */
delete &dp; // deleting a dangling pointer
}
在这个例子中,它的行为是随机的。它可能会崩溃,或者它可能指向另一个对象,取决于它所在的内存发生了什么。
相关问题
- 1. 什么是悬挂指针
- 2. 当应用程序被删除时PendingIntents会发生什么?
- 3. 当文件被删除时,文件句柄会发生什么?
- 4. 当Hbase表被删除时,数据会发生什么变化?
- 5. 当std :: thread被销毁时,如果指针指向shared_ptr会发生什么?
- 6. 为什么当对象被删除时NSFetchedResultsChangeDelete不会被触发?
- 7. 有什么不对?悬挂指针?
- 8. 悬挂指针
- 9. 悬挂指针
- 10. 表被删除时依赖触发器会发生什么?
- 11. C++ boost:asio当会话类被删除时服务器类会发生什么
- 12. 参考被删除时会发生什么?
- 13. 查找指针会发生什么?
- 14. 指向另一个指针的指针 - 会发生什么?
- 15. 当应用程序被删除时,Sqlite数据库会发生什么变化
- 16. 当关联通知被删除时,前台服务会发生什么情况?
- 17. 当干线在SVN中被删除时会发生什么标签
- 18. 当某些项目被删除时,来自MediaStore的ID会发生什么?
- 19. 当所有对象引用被删除时异步方法会发生什么?
- 20. 当我删除一列时Oracle会发生什么?
- 21. 当达到逻辑删除限制时会发生什么
- 22. 当我在html中删除doctype时会发生什么?
- 23. 当删除一个指针时发生崩溃
- 24. 这是否会导致悬挂指针?
- 25. 当我们将一个指针指向NULL时会发生什么?
- 26. C++指针结构不会被删除
- 27. 如果我们在增加指针后删除数组会发生什么?
- 28. RandomAccessFile的悬挂指针
- 29. Realloc创建悬挂指针?
- 30. C悬挂指针问题
这很大程度上取决于C运行时库和配置的特定实现(即gcc/msvc可能会有不同的行为,调试和释放msvc堆会做不同的事情等)。 – stgatilov
“实际上会发生什么?”那么,它是不确定的,所以我们不知道。理论上它可以打开你的车库门。也许你是指特定的编译器/操作系统? – AndyG