难题
为什么用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




