dbgheap.c错误!
程序一关闭就出现以上错误,如何调试解决?新手,请说的详细点儿 问题点数:100、回复次数:6Top
1 楼fanqing(火影忍者+28%(准备学习进程/线程))回复于 2005-01-02 08:09:31 得分 10
upTop
2 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2005-01-02 09:15:16 得分 10
可能是堆溢出,检查申请内存和赋值的代码.看看有没有越界Top
3 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2005-01-02 09:20:56 得分 10
比如这个样子
//堆溢出
class HeapOverruns
{
public:
HeapOverruns()
{
m_pBuffer = NULL;
}
~HeapOverruns()
{
if(m_pBuffer != NULL)
{
free(m_pBuffer);
}
}
void InitBuffer(char* pBuffer)
{
m_pBuffer = pBuffer;
}
void SetBuffer(const char* pBuffer)
{
strcpy(m_pBuffer,pBuffer);
}
const char* GetBuffer()
{
return m_pBuffer;
}
private:
char* m_pBuffer;
};
HeapOverruns* pHeapOverruns = NULL;
void CMainFrame::OnTest8()
{
char arg1[128];
char arg2[4] = {0x0f, 0x10, 0x40, 0};
int offset = 0x40;
memset(arg1, 0xfd, offset);
arg1[offset] = (char)0x94;
arg1[offset+1] = (char)0xfe;
arg1[offset+2] = (char)0x12;
arg1[offset+3] = 0;
arg1[offset+4] = 0;
pHeapOverruns = new HeapOverruns;
char* pBuffer1 = NULL;
pBuffer1 = (char*)malloc(20);
char* pBuffer2 = NULL;
pBuffer2 = (char*)malloc(20);
pHeapOverruns->InitBuffer(pBuffer1);
strcpy(pBuffer2,arg1);
pHeapOverruns->SetBuffer(arg2);
strOutput.Format("pHeapOverruns->GetBuffer() = %s\r\npBuffer2 = %s",
pHeapOverruns->GetBuffer(),pBuffer2);
AfxMessageBox(strOutput);
if(pBuffer2 != NULL)
{
free(pBuffer2);
}
if(pHeapOverruns != NULL)
{
delete pHeapOverruns;
}
}
Top
4 楼HunterForPig(留着口水的猪)回复于 2005-01-02 12:35:11 得分 20
关于内存泄露的文章,希望对你有用!
http://www.csdn.net/Develop/Read_Article.asp?Id=22766
http://www.csdn.net/Develop/Read_Article.asp?Id=22767
http://www.csdn.net/Develop/Read_Article.asp?Id=22768
Top
5 楼crystal521(【云淡风轻】)回复于 2005-01-02 13:18:01 得分 10
参考一下:
在VisualC++中检测和隔离内存泄漏
http://dev.csdn.net/develop/article/54/54227.shtmTop
6 楼vcleaner(我没当大哥很久了.......)回复于 2005-01-02 13:49:04 得分 40
呵呵,主要还是操作了非法的指针造成的!新年快乐!Top




