为什么我在这里得到一个访问冲突读取位置0xC0000005,如果在我在linux中编码时,相同的代码就像一个魅力一样?C++访问违规?
if(nodo->izq!=NULL) //nodo is a class or struct and "sig" is a pointer of the same kind
VaciarAux(nodo->izq);
有没有办法在没有未处理的异常的情况下完成这个任务? 断言会做的伎俩?
这里是功能
void Arbol<T>::VaciarAux(Nodo<T> * &nodo)
{
if(nodo->izq!=NULL)
VaciarAux(nodo->izq);
if(nodo->der!=NULL)
VaciarAux(nodo->der);
if(nodo->izq == NULL && nodo->der ==NULL)
{
actual = nodo;
nodo=NULL;
delete actual;
contador--;
}
'assert'只是作为您的程序的健全性检查。任何使用'assert'完成的检查都不应该存在于生产代码中。你可能在某处读取了未初始化的内存,因此你的NULL检查通过了,但是随后你进入了随机存储区。但是,您应该发布更多代码来帮助评估您的问题。 – Pablo
没有足够的信息在您的问题需要足够的答复。访问违规可能是出于任何原因。 –
你是什么意思“断言会做诡计”?问问题时始终要非常具体。 –