清除或清空 VLA

Clear or empty a VLA

本文关键字:VLA 清空 清除      更新时间:2023-10-16

我有一个类成员作为VLA,引用一些其他对象(即包含指向其他对象的指针)。我想在完成VLA内容后清空它。将其长度设置为零是否足够,或者我需要在此之前将其各个元素设置为 NULL,还是需要同时执行这两项操作?

注意

:VLA是C99标准的一部分,即使GCC允许它们在那里,它们也不是C++的一部分。

话虽如此,一旦创建了数组,就无法清除它。数组(无论是常规数组还是 VLA)的空间被保留到块的末尾(在函数中)或直到程序结束(在命名空间级别)。

如果您希望可调整大小的数组,则应使用动态数组:事实证明,标准库为这种用法提供了std::vector

>C++没有使用缩写VLA所指示的可变长度数组(如C99)。

因此,虽然您关于如何处理代码中的特定 VLA 的问题可能对某些特定的C++语言扩展有意义,但它对标准C++没有意义。

一些源代码,关于C++语言扩展的信息,或者其他什么,简而言之,对问题的一些具体描述,可能有助于给出一个更面向问题的答案,而不仅仅是纠正一些误解。


这是一个合理的猜测,通过使用std::vector而不是您正在使用的任何东西,您会得到很好的服务。

但是,这也是一个合理的猜测,您的问题实际上是关于某些C++语言扩展中的VLA,在这种情况下,使用std::vector的建议很可能是不好的。

没有信息可以决定好的建议。

使用 std::vector ,然后执行my_vector.clear();