数组中的自由元素

时间:2012-08-15 21:01:20

标签: c++ arrays dynamic size

可能这是一个非常基本的问题,但无论如何都要进行。我有一个大小为10的数组。但是,在为该数组分配整数时,我只给出了8个元素。我可以释放2个未使用的元素吗?

2 个答案:

答案 0 :(得分:1)

不,你不能。对于动态分配,您只能使用freedelete分配的mallocnew内存。具有完全相同指针的完全相同的量。对于自动变量,将自动释放内存。

但由于这是C ++,请改用std::vector。请。

答案 1 :(得分:1)

这取决于你如何获得阵列。

如果它是在自动或静态存储(即本地或全局)中分配的数组,则没有任何东西可以释放,因为你没有分配任何东西(编译器为你做了)。

如果这是一个动态分配的数组,您可以通过创建一个只有八个元素的较小数组,将原始值复制到其中,然后释放原始数组来实现相同的效果。这并不能保证分配给程序的内存量必然会下降,因为允许八元素数组的分配器为更多元素分配空间。如果数字是10000和8000,另一方面,你几乎肯定会得到一些节省(虽然标准也不保证)。