网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VC编程 >> 文章正文
  说说C++中的malloc与new            【字体:
说说C++中的malloc与new
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    

 说说C++中的malloc与new

    很多人都知道malloc与new都是用来申请空间用的,开辟空间来源于堆中。
正在装载数据……
但是在C++中却很少用malloc去申请空间,为什么会这样?后面会有个很有说服力的例子,相信大家一看就能明白。C++程序的格局可分为4个区,注意是“格局”,
1、全局数据区 2、代码区 3、栈区 4、堆区
其中全局变量,静态变量是属于全局数据区;所有的类和非成员函数的代码都存放在代码区;为成员函数运行而分配的局部变量的空间都在栈区,剩下的那些空间都属于堆区。
下面来写个简单的例子
#include <iostream.h>

class Test
{
 public:
 Test()
 {
  cout<<"The Class have Constructed"<<endl;
 }
 ~Test()
 {
  cout<<"The Class have DisConstructed"<<endl;
 }
};
int main()
{
 Test *p=(Test*)malloc(sizeof(Test));
 delete p;
 return 0;
}
编译运行:The Class have DisConstructed
结果是没有调用构造函数,从这个例子可以看出,调用malloc后,malloc只负责给对象指针分配空间,而不去调用构造函数对其初始化。而C++中一个类的对象构造,需要是分配空间,调用构造函数,成员的初始化,或者说对象的一个初始化过程。通过上述例子希望大家在使用C++中尽量不要去使用malloc,而去使用new。

#include <iostream.h>
class Test
{
 public:
 Test()
 {
  cout<<"The Class have Constructed"<<endl;
 }
 ~Test()
 {
  cout<<"The Class have DisConstructed"<<endl;
 }
};
int main()
{
 //Test *p=(Test*)malloc(sizeof(Test));
 Test *p=new Test;
 cout<<"test";
 //delete p;
 free (p);
    return 0;
}

 




本文来源:http://blog.csdn.net/jufeng2309/archive/2007/08/28/1761828.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     directx 图形接口指南(…
     win2k下的api函数的拦截
     用crypto  api  实现公钥…
     根据别人的md5源码封装的…
     vc中使用gdi+合并jpg图片
     document/view的交互 --…
     windows下的函数hook技术
     windows api函数大全一
     用vc 6.0实现串行通信的…
     vc++技术内幕(第四版)…
  • 开发手记---JAVA数据库连接池

  • 设计模式之--Bridge

  • JAVA 应用简单破解---类库提…

  • java现状----编程使用的语言…

  • genexus中对字符串的格式补空…

  • SIP简介,第2部分:SIP SERV…

  • JavaWeb中的Session、Sessio…

  • struts异常_does not start …

  • 关于Linux下C/C++程序编译

  • c++ 09 :一览未来

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David