c++ - 释放字符指针

标签 c++

我一直在尝试释放这个 char 指针数组,但我不确定如何完全释放它。

代码如下:

char* words[4];
words[0] = new char[8];
words[1] = new char[6];
words[2] = new char[10];
words[3] = new char[16];

这是我尝试过的

for (int i=0;i<4;i++)
{
    delete [] words[i];// this works
}
delete [] words;//this gives an error, not sure why it doesn't work.

有人可以解释为什么这是不正确的以及如何解决它 提前致谢。

最佳答案

删除的内容。你没有new words,所以不要删除它。大概这段代码在函数内部,在这种情况下 words 具有自动存储持续时间,并且在超出范围时将自动销毁。

此外,不要 new 任何你不需要的东西,这样可以避免正确删除它的麻烦(这可能非常困难)。需要动态数组时使用 std::vector,需要动态字符串时使用 std::string

关于c++ - 释放字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205155/

相关文章:

c++ - valgrind 错误 "Invalid read of size 4"

c++ - 如何使用rapidjson C++检索JSON文件中的键值数据?

c++ - 分配和比较编码风格

c++ - 无法将统一 float 组传递给片段着色器

c++ - 为什么我们需要在运行时使用函数指针调用这些函数。我们也可以直接调用他们

c++ - 我如何使用 BOOST_LOG_TRIVIAL 宏将任何内容记录到 stdout/stderr 和文件中

c++ - 取消时可以将 boost::asio::yield_context 用作 deadline_timer 处理程序吗?

c++ - 运算符 -> 不适用于自定义输入迭代器

c++ - 实时读取C++服务器上的输入

c# - 从 C++ 应用程序 (Android NDK) 免费运行 C# 代码