zoukankan      html  css  js  c++  java
  • 忘记深拷贝的后果

    写了一个类,

    class CTP

    {
    public:
     CTP( )
     {
       m_pic = new BYTE [ 20 ] ;
     }

     ~CTP( )
     {
      delete [] m_pic ;
     }

    private:

    BYTE * m_pic;

    }

    在另一端写了类似这样的代码

    {

    vector<CTP> vTp;

    CTP a;

    vTp.push_back(a);

    }

    然后每次在运行到析构的delete的时候会内存访问错误。找了很久,在便友的帮助下,找到原因——push_back会做一次CTP的复制构造函数,由于我没有给出代码,所以编译器自己写了一个浅拷贝。造成那段代码被重复删除,问题出现。

    解决办法,是给出复制构造函数,或者(更好的办法)是封装vector,只是传递指针。

  • 相关阅读:
    Access-自定义控件TabControl
    Excel公式-求最低价网站名字
    Excel图表-太极图
    Excel图表-"DNA"图
    VB中的GDI编程-2 画笔
    leetcode
    leetcode
    leetcode
    leetcode
    leetcode
  • 原文地址:https://www.cnblogs.com/aicro/p/1659998.html
Copyright © 2011-2022 走看看