T
is = to char
counts_
是存储在堆上的整数数组 是堆上
values_
的数组数组
问题出现在 if 语句中,当我尝试删除时tmpe
出现错误。如果我将删除语句注释掉,代码会运行,但它只是将我的所有指针都指向values_
同一个数组。代码的想法是创建一个包含所选values_
数组之一的值的新数组,然后向其中添加一个额外的值。然后将它重新分配回values_
我从中获取它的数组中的位置。该tmpe
数组一直保持正确的值,直到我尝试删除指向它的指针为止。运行整个程序时出现 Aborted (core dumped) 错误。
if (initialized(n) == true)
{
T *tmpe = new T[counts_[n] + 1];
for (size_type i = 0; i < counts_[n]; i++)
{
tmpe[i] = values_[n][i];
}
tmpe[counts_[n]] = val;
delete [] values_[n];
values_[n] = tmpe;
delete [] tmpe;
counts_[n]++;
}
else
{
T *tmpd = new T[counts_[n] + 1];
tmpd[counts_[n]] = val;
delete [] values_[n];
values_[n] = tmpd;
delete [] tmpd;
counts_[n]++;
}