-1

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

4

3 回答 3

1

在使用缩写VLA(如 C99 中)所指示的意义上,C++ 没有可变长度数组。

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

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


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

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

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

于 2012-11-23T07:13:45.373 回答
1

注意:VLA 是 C99 标准的一部分,即使 gcc 允许它们,它们也不是 C++ 的一部分。

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

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

于 2012-11-23T07:15:41.483 回答
0

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

于 2012-11-23T07:13:13.000 回答