还有,对于C/C++而言,这不是缺点,是语言特性
置空并不能解决野指针,因为存在多个指针指向同一片内存可能,delete/free 即使对操作的指针置空,其他指向此内存的指针又不受影响…… 考虑使用智能指针更好。
两个场景 1. int* p = new int; --p; delete (p+1); 这种时候你怎么置NULL? 2. int* p = new int; int* q = p; delete p; 就算p成NULL了,q不是一样还是野指针? 我既不同意这是“最大的问题”,更不同意弄个delete free置NULL就以为能解决这个问题的想法。这么想的实在是太天真,根本就没考虑过真的引入这个行为以后后果是怎样。
[quote=引用 楼主 sailing0123 的回复:] 今天有人问我: C&C++最大的缺点之一--------野指针问题, 为什么各种编译器都不在delete/free后就把指针变量置空NULL呢? 请教各位大牛们帮忙解释解释,谢谢!
今天有人问我: C&C++最大的缺点之一--------野指针问题, 为什么各种编译器都不在delete/free后就把指针变量置空NULL呢? 请教各位大牛们帮忙解释解释,谢谢!
64,282
社区成员
250,470
社区内容
加载中
试试用AI创作助手写篇文章吧