我的动态数组模板类正在做奇怪的事情
My Dynamic Array template class is doing weird things
代码
我在处理字符串时遇到问题。每当我尝试一个字符串时,我都会得到一个可爱的小错误代码:
在 arraytest .exe 中0x77e815de时未处理的异常: 0xC0000005:访问冲突读取位置0xabababab。
它可以很好地处理 int、double 和 char。我还尝试了与我使用的完全相同的测试字符串(字母表)作为字符*,它也做得很好。它只是在弦上呕吐,原因我无法完全理解。我真的不知道接下来该去哪里。有什么建议吗?
您在push_back
中的重新分配代码有问题
template<class type>
void DynamicArray<type>::push_back(type newValue)
{
++_size; // <=== **
if (_size > _capacity) // If size larger than capacity
{
_capacity *= CAPACITY_MULT; // double capacity
type* tempArray = new type[_capacity];// Create temporary array with new capacity
// Copy array values into temporary array
for (int i = 0; i < _size; i++) // <=== **
{
tempArray[i] = dynArray[i];
}
// Delete dynArray
delete[] dynArray;
// Insert new value at end of temporary array
// Set dynArray to temporary array
dynArray = tempArray;
}
dynArray[_size - 1] = newValue;
}
首先增加当前容器的大小,然后再检查是否有空间容纳新元素。然后,在将旧值复制到新数组时使用新大小。
这似乎适用于基元类型,但std::string
会尝试复制自己的内部数据(不存在)并导致访问冲突。
相关文章:
- std::向量与传递值的动态数组
- 将数组动态分配到具有指针参数的函数中
- 我可以以某种方式使我的矢量/数组动态更改装置数量吗?
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 为什么C 没有方便的方式来为多维数组动态分配内存
- 如何制作具有动态大小的数组?动态数组的一般用法(可能还有指针)
- c++中的数组动态内存分配
- 多维数组动态分配的内存图
- 如何在 c++ 中使用 2-D 固定数组为 4-D 数组动态分配内存
- C++ 我在数组/动态内存方面遇到了一些问题
- C++ 中从数组动态强制转换
- C++中高维数组动态内存分配的正确方法.
- 从 C++ 结构中包含的指针数组动态分配和访问内存
- 对象数组动态内存分配
- 为二维数组动态分配内存时出错
- 如何将2d数组动态分配给结构
- 为结构数组c++动态分配内存
- 将数组动态添加到多维数组
- 类中的类数组-动态数组(c++)有问题
- 分配对象数组动态冻结