可能,这是一个非常基本的问题,但无论如何。我有一个大小为 10 的数组。但是,在为该数组分配整数时,我只给出 8 个元素。我可以释放 2 个未使用的元素的内存吗?
问问题
835 次
2 回答
1
不,你不能。对于动态分配,您只能使用free
or分配的delete
内存。完全相同的数量与完全相同的指针。对于自动变量,内存将被自动释放。malloc
new
但由于这是 C++,请使用 astd::vector
代替。请。
于 2012-08-15T21:03:42.710 回答
1
这首先取决于您如何获得阵列。
如果它是在自动或静态存储(即本地或全局)中分配的数组,则没有任何东西可以释放,因为您没有分配任何东西(编译器为您做了)。
如果这是一个动态分配的数组,您可以通过创建一个只有八个元素的较小数组,将原始值复制到其中,然后释放原始数组来达到相同的效果。这并不能保证分配给程序的内存量一定会减少,因为八元素数组的分配器允许为更多元素分配空间。另一方面,如果数字是 10000 和 8000,您几乎肯定会节省一些钱(尽管标准也不能保证)。
于 2012-08-15T21:04:37.583 回答