野指针bug
RunUnit *UnitList[10000];
void aaaa()
{
//用cu接收
RunUnit *cu = UnitList[Index];
/*
利用UnitList[Index]中的数据,借助用cu做一系列的动作
*/
//UnitList[Index]中的数据之后在哪都不再使用,这里把它销毁
delete cu;
cu = nullptr;
}
void bbbb()
{
if(UnitList[Index] == nullptr)
{
continue;
}
int c = 0; //会走到这里
UnitList[Index].index = 0; //会出问题
}
解释:cu和UnitList[Index]都指向同一块地址,他们在栈上的不同位置;
delete cu; :将堆上的地址给清掉;
但cu和UnitList[Index]都还是有值的,只是指向的地址没有数据;所以下次去判断UnitList[Index] == nullptr不会通过,会继续往下,那利用到这块堆上的时候就有问题了;
RunUnit *UnitList[10000];
void aaaa()
{
//用cu接收
RunUnit *cu = UnitList[Index];
/*
利用UnitList[Index]中的数据,借助用cu做一系列的动作
*/
//UnitList[Index]中的数据之后在哪都不再使用,这里把它销毁
delete cu;
UnitList[Index] = nullptr;
}
void bbbb()
{
if(UnitList[Index] == nullptr)
{
continue;
}
int c = 0; //不会走到这里
UnitList[Index].index = 0; //不会出问题
}
原文地址:https://blog.csdn.net/qq_30263737/article/details/145050364
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/502533.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/502533.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!