你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 编程语言
解析VC6.0中为类对象申请内存的过程(一)
 

     在用VC开发时常常需要对内存进行操作,其中C++中提供了运算符newdelete;而C语言库中提供有mallocfree。它们在具体使用时存在着一些差别,文中主要解析VC6.0中为类对象申请内存的过程。

关键词  VC6.0,内存申请,C++newdelete

 

 

1概述

在用VC开发时常常需要对内存进行操作,其中C++中提供了运算符newdelete;而C语言库中提供有mallocfree。它们在具体使用时存在着一些差别,大家也可能有一些疑问;如:为什么C++运算符new在为类对象申请内存时会调用类的构造函数而malloc则不会;为什么用new申请一个对象数组时就必须用delete[]释放而申请一个long类型的数组就能用delete释放,new一个对像与new一个对象数组以及new一个基本数据类型的数组有什么不同;为什么用new申请一个对象用delete[]释放有时会出错,而有时就成功。文中主要解析VC中为类对象申请内存的过程,同时解答上述几个疑问,希望能给大家予以一定帮助。在此说明一下试验的环境:VC6.0编译环境,IDE5.0。

2   malloc new

这两个操作的区别主要是在申请一个类的对象时,malloc不会调用类对象的构造函数而new会调用,这里定义一个类用来实际测试,下面将以这个类为基础讨论mallocnew的差别。

long g_Number = 0;

class CMemoryItem 

{

public:

    CMemoryItem()

    {

        m_info.Format("Construct CMemoryItem Nember[%d] \n", ++g_Number);

        OutputDebugString(m_info);

    }

   

    virtual ~CMemoryItem()

    {

        m_info.Replace("Construct","Destructor");

        OutputDebugString(m_info);

        g_Number--;

    }

private:

    CString m_info;

};

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089