VC++中GlobalAlloc()、malloc()和new()函数都可以用来实现内存的动态分配,那么它们之间有什么区别呢?
三者的区别主要有以下几点:
1、GlobalAlloc()函数在程序的堆中分配一定的内存,是Win16的函数,对应于系统的全局栈,而在Win32中全局栈和局部堆的区别已经不存在了,因此不推荐在Win32中使用该函数。
2、malloc()是标准库函数,而new则是运算符,它们都可以用于申请动态内存。
3、new()实际上调用的是malloc()函数。
4、new运算符除了分配内存,还可以调用构造函数,但是malloc()函数只负责分配内存。
对于非内部数据类型的对象而言,只使用malloc()函数将无法满足动态对象的要求,因为malloc()函数不能完成执行构造函数的任务。