爲什麼我在這裏得到一個訪問衝突讀取位置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
沒有足夠的信息在您的問題需要足夠的答覆。訪問違規可能是出於任何原因。 –
你是什麼意思「斷言會做詭計」?問問題時始終要非常具體。 –