删除时的2D数组访问冲突(Borland C ++)

时间:2014-02-14 07:57:56

标签: c++ g++ access-violation borland-c++

我有以下代码:

nErgebnisse = new unsigned int*[nInitialVecSize];
for(unsigned int i = 0; i <= nInitialVecSize; ++i )
{
  nErgebnisse[i] = new unsigned int[nMaxSektorMenge];
}

//do some stuff

for(unsigned int i = 0; i <= nInitialVecSize; ++i )
{
   delete[] nErgebnisse[i];
}
delete[] nErgebnisse;

它只分配和删除一个2D unsigned int数组。 这段代码可以正常使用当前的G ++,但是我的Borland Compiler在工作时遇到了第一个访问冲突

delete[] nErgebnisse[0]

话说:

  

0x32b6f4e3处的访问冲突:写入地址0xffffffff

这里有什么问题?

1 个答案:

答案 0 :(得分:2)

在这里你要创建一个数组但是

nErgebnisse = new unsigned int*[nInitialVecSize];
for(unsigned int i = 0; i <= nInitialVecSize; ++i )
{
  nErgebnisse[i] = new unsigned int[nMaxSektorMenge];
}

i = nInitialVecSize写入超出数组范围的时候,因为你的for循环中有<=。请改用

for(unsigned int i = 0; i < nInitialVecSize; ++i )