可能这是一个非常基本的问题,但无论如何都要进行。我有一个大小为10的数组。但是,在为该数组分配整数时,我只给出了8个元素。我可以释放2个未使用的元素吗?
答案 0 :(得分:1)
free
或delete
分配的malloc
或new
内存。具有完全相同指针的完全相同的量。对于自动变量,将自动释放内存。
但由于这是C ++,请改用std::vector
。请。
答案 1 :(得分:1)
这取决于你如何获得阵列。
如果它是在自动或静态存储(即本地或全局)中分配的数组,则没有任何东西可以释放,因为你没有分配任何东西(编译器为你做了)。
如果这是一个动态分配的数组,您可以通过创建一个只有八个元素的较小数组,将原始值复制到其中,然后释放原始数组来实现相同的效果。这并不能保证分配给程序的内存量必然会下降,因为允许八元素数组的分配器为更多元素分配空间。如果数字是10000和8000,另一方面,你几乎肯定会得到一些节省(虽然标准也不保证)。