c++ - 遇到无效写入问题

标签 c++ pointers valgrind

我真的需要有人告诉我为什么这是不正确的。我不精通指针的方式来理解我所犯的错误。

template <class T> UndoArray<T>::UndoArray(uint n)
{
    this->size_ = n;
    this->counts_ = new uint[n]; // this tells how many objs are in || values array
    values_ = new T*[n];
    //declare arrays in each spot of values_
    for(uint i=0; i<size_; ++i)  //HERE<=========
    {
        values_[n] = NULL;
    }
}

出于某种原因,我在此处说过,我在 Valgrind 上遇到无效写入错误。每当我写这些时,我似乎都得到了它们。有一次,该程序甚至向我抛出一个 malloc 错误,提示我试图删除尚未分配的内容。

最佳答案

values_[n] = NULL;

在这一行中,您要在分配的数组末尾之后写入一个。也许您打算使用 values_[i]

关于c++ - 遇到无效写入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18995827/

相关文章:

c++ - 错误: no match for 'operator<<' C++

c - 如何从 C 函数返回指针?

c++ - 通过指针和名称将函数传递给另一个函数

函数中的 C++ 指针和引用

c++ - 标记为可能丢失 block 的静态指针是否损坏?

c++ - 是否有比使用欧几里得算法更好的获取gcd的方法

c++ - std::arg 为实际输入返回不正确的值(使用 MSVC 编译器)

c++ - 输入错误会导致程序退出

c - while 循环中出现段错误。 Valgrind 没有发现错误

c - 为什么 Valgrind 会清理我的输入文本文件?