小编dav*_*alk的帖子

free():在 tcache 2 中检测到双重释放

我正在用 C++ 编写自己的动态数组类(类似于 std::vector),并且在拥有包含动态数组的动态数组时遇到问题。

基本上,当拥有所有数据类型(int、double、float、std::string 等)的数组时,没有问题,并且该类的所有功能都很好用。

当数据类型是另一个数组时,尽管有些事情发生了混乱,并且在程序末尾出现了错误(free():在 tcache 2 中检测到双重释放)

全部代码:

动态数组.h:

#pragma once

#include <iostream>

namespace Utils
{
    template <typename T>
    class DynamicArray
    {
        private:
            size_t array_length;
            T* array;
        public:
            ~DynamicArray();
            DynamicArray();
            DynamicArray(const int& initialLength);
            void Print();
            size_t GetLength() const;
            void AddItem(const T& newItem);
            // TODO: void AddItems(const T* newItemsArray);
            void RemoveItem(int index);
            T& GetItem(int index);
            void SetItem(const int& index, const T& newValue);
            T& operator [](int index) const;
            void ResetArray(T resetValue);
    };
}

#include "DynamicArray.cpp"
Run Code Online (Sandbox Code Playgroud)

动态数组.cpp:

#include "DynamicArray.h"

template<typename …
Run Code Online (Sandbox Code Playgroud)

c++ memory arrays memory-management

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

arrays ×1

c++ ×1

memory ×1

memory-management ×1