VC++中GlobalAlloc()、malloc()和new()函数之间区别

  VC++中GlobalAlloc()、malloc()和new()函数都可以用来实现内存的动态分配,那么它们之间有什么区别呢?

三者的区别主要有以下几点:

1、GlobalAlloc()函数在程序的堆中分配一定的内存,是Win16的函数,对应于系统的全局栈,而在Win32中全局栈和局部堆的区别已经不存在了,因此不推荐在Win32中使用该函数。

2、malloc()是标准库函数,而new则是运算符,它们都可以用于申请动态内存。

3、new()实际上调用的是malloc()函数。

4、new运算符除了分配内存,还可以调用构造函数,但是malloc()函数只负责分配内存。

对于非内部数据类型的对象而言,只使用malloc()函数将无法满足动态对象的要求,因为malloc()函数不能完成执行构造函数的任务。

posted @ 2011-08-23 09:29  心随灵动  阅读(484)  评论(0编辑  收藏  举报