C++的动态内存分配

来源:岁月联盟 编辑:zhu 时间:2009-02-19
c程序中,动态内存分配是通过调用诸如malloc()和free()等库函数来实现,而C++给出了用new和delete运算符进行动态内存分配的新方法。
以下是c++程序中用新方法实现动态内存分配的例子。


void func()
{int*i=new int;//为指针i分配存储空间&
*i—10;
tOut<<i;
delete i;//释放i指向的存储空间
}
用传统的C程序实现是这样的:
void func(void)
{int*il
i=malloc(sizeof(int));
*i=10;
printf(”%d",*i);
free(i);
}


显然C++的写法更加直观、易读,而且在分配存储时无需显式地计算int所占存储空间的大小。然而,在C++中增加new和delete机制的目的远不在于此,而是为了实现更大的灵活性。比如,任何类可通过运算符重载来定义自己的new和delete,因为用户定义的类,由于各自特定的应用,其对象的分配和释放的过程并不一定一样。


由于所用的存储管理系统不一样,同时混用它们可能会导致问题。为此,建议读者最好只用C++的new和delete,或者应保证分配和释放存储空间所用的函数(运算符)一致。