CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

难题

楼主thrillers(长夜漫漫,无心睡眠)2002-05-22 14:47:25 在 C/C++ / C语言 提问

为什么用malloc()分配空间时不调用构造函数,而在用new时却调用了构造函数 问题点数:20、回复次数:5Top

1 楼shornmao(毛豆子[死猫])回复于 2002-05-22 14:54:17 得分 0

因为malloc是C标准库的函数,而C中根本就没有构造函数,你说malloc怎么能调用构造函数?Top

2 楼ahlazy(chun)回复于 2002-05-22 15:00:26 得分 0

楼上说得很对  
  C不是C++Top

3 楼LionEagle(LionEagle)回复于 2002-05-22 15:16:36 得分 0

agree  
   
  同样的,free也不会调用析构函数Top

4 楼kof99th(小虫)回复于 2002-05-22 15:20:28 得分 0

你用c还是   c++啊?  
  Top

5 楼DreamHead(大头)回复于 2002-05-22 15:22:32 得分 20

内存分配:(摘自我的毕业论文:)  
  如果在C语言里面,我们通常的做法是,利用malloc(或其变体calloc、realloc等)为某一struct对象分配一块内存,然后执行相应的初始化操作,如:  
  struct   sA*   objA;  
  objA   =   (struct   sA*)   malloc(sizeof(struct   sA));  
  sA_Init(objA);  
  在C++里面,我们常见的做法是利用new来为对象分配内存,如:  
  classA*   objA   =   new   classA;  
  而实际上,这一语句真正的执行动作是两个,等价于上面描述的C过程,即分配内存和初始化。  
   
  其实,想想也知道,C里面没有constructor这个概念,它当然也就无法调用了,而在C++里,实际上,是把两个过程统一了。Top

相关问题

  • =========难题。难题======
  • 难题!难题!难题!
  • 难题
  • 难题??!!!
  • 难题~~~~~~~~
  • 难题
  • 难题。
  • 难题!
  • 难题!
  • 难题

关键词

  • c++
  • 函数
  • 内存
  • sa
  • 调用
  • obja
  • 构造
  • 分配
  • malloc
  • struct

得分解答快速导航

  • 帖主:thrillers
  • DreamHead

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo