我已經宣佈下列類型的矢量:複製向量和代碼進入_CrtIsValidHeapPointer()
vector<CDFE> vDFE;
其中CDFE是一個類,它包含一個可變double usage
。
我訪問它通過指針如下,例如:
pDoc->vDFE.at(i).usage;
我創建如下的臨時矢量,因爲我不希望修改vDFE
。
vector<CDFE> tempDFE(pDoc->vDFE);
但是當我運行的前衛,它使用了一些功能_CrtIsValidHeapPointer()
我在做什麼錯?
您的幫助非常有幫助。
以下是一些代碼:
class CDFE : public CRect
{
public:
CDFE();
virtual ~CDFE();
double usage;
}
void CRXView::OnDraw(CDC* pDC)
{
CRXDoc* pDoc = GetDocument();
vector<CDFE> tempDFE(pDoc->vDFE);
}
CRXDoc* CRXView::GetDocument() const // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRXDoc)));
return (CRXDoc*)m_pDocument;
}
許多可能的原因,腐化堆從來沒有這麼困難。首先看三條規則,並確保你將它應用到你的CDFE類中,並且它的拷貝構造函數和賦值操作符都是可靠的。 –
它會在那裏產生錯誤嗎?我相信函數只是檢查指針是否有效。 – Angew
哪一行觸發行爲?你可以通過調試器來看看究竟哪一行導致你的程序出錯了嗎? – Jimbo