以下是引用TonyDeng在2015-1-20 21:30:53的发言:
是的,就是指針亂指造成的。你所謂的解決,在暫時的,在其他野指針沒有指向這些位置并覆蓋數據的情況下,是沒有錯誤,正因爲不是必然的,所以才是野指針。偶然出現的叫bug,如果總是錯誤,在調試階段就已經發現并改正了,就是因爲偶然能通過,才讓你找不到問題的真正原因。出錯的概率越小,問題越難改正。
每次出現問題,你就稍做改變,然而過後又再出現,於是你又再稍做改變,永遠沒個完,這叫“解決”麽?解決了的問題是不需要再修改程序的!
是的,就是指針亂指造成的。你所謂的解決,在暫時的,在其他野指針沒有指向這些位置并覆蓋數據的情況下,是沒有錯誤,正因爲不是必然的,所以才是野指針。偶然出現的叫bug,如果總是錯誤,在調試階段就已經發現并改正了,就是因爲偶然能通過,才讓你找不到問題的真正原因。出錯的概率越小,問題越難改正。
每次出現問題,你就稍做改變,然而過後又再出現,於是你又再稍做改變,永遠沒個完,這叫“解決”麽?解決了的問題是不需要再修改程序的!
感觉越来越接近问题核心了,大概知道所指野指针的意思,你说的其实也曾经有人说过,但是知道归知道,却不知道问题的根源.
不懂哪些情况会造成野指针?
1.虽说内存分配后没释放有可能,但是如我上面所说的,生命周期结束后,虽没释放但该指针也失去意义.(甚至重新指定指针时,针对新指针内空间的值清空)
2.或如上有人说过的把A指针地址指给B之类的,但是作用影响范围应该也不会牵连到其他变量吧.
3.不知道还有其他的吗?
所以依此说来,要尽量避免出现野指针最好但消极的做法,是尽量少声明各式变量,而从头到尾使用一个全局大型静态结构体或阵列,
而内存空间从程式一开始就全部固定配置了,好像这样就可以避免了吗?
不要選我當版主