if (tmpFlight->RoutePointIDArray[k]==h_RtPtArrStateArray[kk]->RtPtArrName)
这是我写的一个判断语句,程序在执行的时候,当k=12;kk=4时莫名其妙的弹出一个无法处理的异常,可能和内存有关,经过检查判断语句下的代码和其属于的循环语句都没有什么问题,那会不会是与我使用的new指针临时对象有关,
在一个函数中有个CArray队列,需要临时添加一个对象,切这对象是一个循环的过程,
for(;;)
{
new tmob;
CArray.Add(tmob);
// delete tmob;
}
每次循环添加的时候我都用new来分配一个新的内存区域,但如果delete的话,添加进去的东西就会为空,如果在循环外面添加new的话,添加进去的元素就会指向同一个内存区域,所以,在这个地方该如何使用new和delete恩?(写得不规范,主要是说明问题),tmob为一个指针类对象。
这是我写的一个判断语句,程序在执行的时候,当k=12;kk=4时莫名其妙的弹出一个无法处理的异常,可能和内存有关,经过检查判断语句下的代码和其属于的循环语句都没有什么问题,那会不会是与我使用的new指针临时对象有关,
在一个函数中有个CArray队列,需要临时添加一个对象,切这对象是一个循环的过程,
for(;;)
{
new tmob;
CArray.Add(tmob);
// delete tmob;
}
每次循环添加的时候我都用new来分配一个新的内存区域,但如果delete的话,添加进去的东西就会为空,如果在循环外面添加new的话,添加进去的元素就会指向同一个内存区域,所以,在这个地方该如何使用new和delete恩?(写得不规范,主要是说明问题),tmob为一个指针类对象。
for(;;)
{
tmob = CArray.GetData();
delete tmob;
}
就是这个异常
for(int l=0;l<index1;l++)
{
l_str=tmpFlight->RoutePointIDArray[l];
ASSERT(l_str!="");
}///程序执行到此没有错误,表明数组中各个变量都是有值的
for(int k=1;k<index1;k++)
{
ASSERT(tmpFlight->RoutePointIDArray[k]!="");///K=1的时候没有错
index=h_RtPtArrStateArray.GetSize();
for(int kk=0;kk<index;kk++)
{
ASSERT(h_RtPtArrStateArray[kk]->RtPtArrName!=""); ASSERT(tmpFlight->RoutePointIDArray[k]!="");}///同样,按理在k=1的时候不会错,但就在这个时候报错了!
}
}各个真的没有人知道原因吗?
{
Type *tmob = new Type();
arr.Add(tmob);
arr.RemoveAt(arr.GetCount() - 1); //删除Array中的对象
delete tmob;
}