C++的动态内存分配
来源:岁月联盟
时间:2009-02-19
以下是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,或者应保证分配和释放存储空间所用的函数(运算符)一致。
上一篇:C++类的构成