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

 

posted @ 2020-03-26 21:12  FizzPu  阅读(104)  评论(0编辑  收藏  举报