清除或清空 VLA
Clear or empty a VLA
我有一个类成员作为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();
。
相关文章:
- 如何清除/清空已打开的文件C++
- 使用完数据结构后清空数据结构是一个好习惯吗?
- 这个用于清空链表的代码可以吗?
- Boost::asio::streambuf consumption() 不清空缓冲区
- 如何从对象的指针清空 std::set?
- 是否使用示波器队列:: swap违反任何规则来清空std ::队列
- std::vector 从一行代码清空到下一行代码
- Eclipse-如何定义宏(不仅是符号)以清空
- C ++如果我使用引用,为什么要清空我的map<string,string>?
- 清空包含char*的结构数组
- 将STD :: unordered_map内存足迹清空后
- 如何清空C 中的输入流
- 清除或清空 VLA
- 为什么我不能以这种方式清空文件?
- 如何清空标准::字符串
- 如何清空列表而不破坏其元素
- 在删除之前清空指针是否会导致内存泄漏
- 重新解释cast<是否安全;bool*>清空内存
- 两个线程之间是否存在任何内存泄漏(缓冲、清空)
- 如何在Qt QMake中清空缓存:没有这样的插槽,重复错误