請考慮下面的情形:C++訪問衝突讀取位置0xcdcdcdcd錯誤上調用一個函數
我有一個頭文件和其相應的源文件:
exmp.h(頭文件)
exmp.cpp(源文件)
在頭文件我有一個函數聲明bubSort(...)
其定義存在於
exmp.cpp
myClass::bubSort(...)
{
....
....
}
其中,myClass->
是exmp.h
定義的類現在,爲了使用該功能bubSort(...)
在另一個文件樣品.cpp,我已經在裏面聲明瞭myClass
Sample.h如下圖所示:
/*Sample.h*/
class myClass;
class sampleClass
{
.....
.....
myClass *ptr;
};
現在使用上述ptr
,我試圖訪問bubSort(...)
在sample.cpp中,如下圖所示:
//Sample.cpp
#include "exmp.h"
sampleClass::func(...)
{
....
....
ptr->bubSort(...);
}
編譯過程中,上面的場景不給任何錯誤,但是同時執行,當控制達到ptr->bubSort(...);
,我得到一個異常:
訪問衝突讀取位置0xcdcdcdcd
有人會告訴我該如何避免這種情況?
在此先感謝。
你是如何初始化'ptr'的? – Nbr44
這可能意味着你沒有把'ptr'指向任何東西。或者它可能是別的。很難說,因爲你還沒有發佈太多相關的代碼。 – juanchopanza
VC++通常使用值0xcd來標記未初始化的內存。 –