zoukankan      html  css  js  c++  java
  • 【ThinkingInC++】65、使用delete void*可能会出错

    /**
    * 书本:【ThinkingInC++】
    * 功能:使用delete void*可能会出错
    * 时间:2014年10月5日14:31:43
    * 作者:cutter_point
    */
    
    #include <iostream>
    
    using namespace std;
    
    class Object
    {
        void* data; //一个void*类型的指针
        const int size;
        const char id;
    public:
        Object(int sz, char c) : size(sz), id(c)
        {
            data=new char[size];
            cout<<"创建一个类 "<<id<<", size = "<<size<<endl;
        }
        //析构函数,输出一段话表示运行了析构函数。然后析构data数组
        ~Object() {cout<<"析构这个类 "<<id<<endl; delete [] data;}
    };
    
    int main()
    {
        Object* a=new Object(40, 'a');
        delete a;
        void* b=new Object(40, 'b');
        delete b;   //显示地结果是b没有调用析构函数
        //因为不知道b的类型是什么。那么程序运行的结果是吧b的对象内存回收了。可是
        //类里面的data指向的类容没有被析构,
    
        return 0;
    }
    
    

  • 相关阅读:
    多线程中注意事项
    多线程实现第三种方式
    线程池《一》
    线程组
    线程间通信注意的问题
    互斥锁
    多个线程通信的问题
    二个线程间的通信
    死锁产生的原理
    线程安全问题
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5318118.html
Copyright © 2011-2022 走看看