动态对象创建(new/delete & malloc/free)

来源:互联网 发布:windows系统编程百度云 编辑:程序博客网 时间:2024/06/05 02:10

         malloc/free是c/c++的库函数,不在编译器的将控制范围之内,我们必须手动的调用构造函数和析构函数来对该内存进行初始化和释放。malloc只是分配了一块内存,而不是生成本了一个对象,所以它返回了一个void*类型指针,而c++不允许将一个void*类型指针赋予其他指针,所以必须强制类型转换。

        new/delete是c++提供的运算符,new:首先分配内存,然后调用构造函数来初始化该内存区域,delete:首先调用析构函数,然后释放内存。 对void*类型指针进行delete操作,将只释放内存,不执行析构函数,因为既没有类型信息也没办法使得编译器知道调用哪个析构函数。

         如果正在删除的对象的指针是0,将不发生任何事情。因此建议在删除指针指向的对象后立即把指针赋值为0一面对他删除两次。

0 0
原创粉丝点击