3.关于c++一些基础知识,这些不懂,我写的c++代码都太fuck了(文章转载)
看到一些总结比较好的文章,放在此处。
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