看到一些总结比较好的文章,放在此处。
c++变量作用域和声明周期
https://blog.csdn.net/fenxinzi557/article/details/52169134
https://blog.csdn.net/KingCat666/article/details/44113823
野指针的产生:
https://blog.csdn.net/msdnwolaile/article/details/50989643
关键点:1.不要在函数内返回局部变量的指针或者引用2.不要把指针指向局部变量。记录一次野指针的产生。最近写书上的demo的时候,碰到这个问题,半天检查不出来。我以前觉得
内存管理不善的问题好解决,可能我错了,代码量一旦大了,而且我还是写完在编译,找bug的时候就很麻烦。
//不要将指针指向局部变量。
Terms(int m_degree, float m_core)
{
degree = m_degree;
core = m_core;
next = nullptr;
}
} *pterm, term;
class Polynomial{
private:
pterm head;
public:
Polynomial(){
term myte = Terms(0,0);
head = &myterm;
/*
以前在写链表的时候,采用head = new Terms(0,0)昨天突发奇想说可以直接采用声明局部变量再取地址的形式,这样我就不用写析构函数了,
呵呵达,事实证明,我自认为很正确的事玩玩错得很离谱。head指针指向节点一个结构体,当析构函数结束了,myte被销毁,head就指向了垃圾内存,head这个地址还存在,后面我们再使用head就拿不到想要的数据。当然可以向这块空间填入数据,但是系统可能会使用这块内存,给他分配其他的数据。head的生命周期是由类决定的,但是局部变量在成员函数结束后销毁,不由类决定。
。
*/
};
额外看到的一个东东
https://blog.csdn.net/gatieme/article/details/17592187
原文链接: https://www.cnblogs.com/jielearscoding/p/12577385.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/337898
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!