今天,一个小错误浪费了大半天的时间。
我在一个函数中使用scope定义了一个局部临时变量,后来又无意中将其它对象赋值给这个临时变量,并进行了一些操作,当走出函数时,gc自动释放了临时变量最后所指向的对象,一但有程序再对这个对象进行操作时,就有可能引发一个av错误。
因为,离开时只会释放scope变量最后所指向的对象,而其它大部份对象却不受影响,所以错误可能会随机出现,让问题比较隐蔽。同时,发现av错误时,通常注意力都会集中在对象是否正创建和释放,而忽略了scope的影响,所以使得找出原因更加困难。