0x4207414b in _int_malloc () from /lib/tls/libc.so.6 这个错误怎么解决,大侠帮忙进来看看

时间:2021-04-21 15:34:19
我的程序从WINDOWS下移植到LINUX下来编译,编译没错,运行时却出现错误,出现段错误,发现是在NEW CLASS时出现的错误,用GDB来跟踪调试,发现出现Program received signal SIGSEGV, Segmentation fault.0x4207414b in _int_malloc () from /lib/tls/libc.so.6 的错误而退出,不知道怎么解决.

6 个解决方案

#1


up

#2


用bt查一下,调用 _int_malloc 的最后一句你的程序语句是哪句。
那句有问题的可能性最大。

#3


把出错的那段代码贴出来

#4


CQueue **m_pParent;
m_pParent=new CQueue*[m_nVertex-1];//错误就出在这里,我用GDB调试时WHERE显示出错地方
m_pParent[i]=new CQueue[nValueKind];
delete [] m_pParent[i];
delete [] m_pParent;

CQueue::CQueue()
{
m_pHead=NULL;
m_pLastAccess=NULL;
printf("constrction\n");
}

CQueue::~CQueue()
{
   PQUEUE_ELEMENT pCur=m_pHead,pTemp;//The pointer of queue chain
   while(pCur!=NULL)
   {
   pTemp=pCur->next;
   delete pCur;
   pCur=pTemp;
   }
   printf("free\n");
}

这是大概的代码意思,能看出什么错误来吗.

#5


CQueue **m_pParent;
m_pParent=new CQueue*[m_nVertex-1];//错误就出在这里,我用GDB调试时WHERE显示出错地方
m_pParent[i]=new CQueue[nValueKind];
delete [] m_pParent[i];
delete [] m_pParent;

没有看懂 
m_pParent=new CQueue*[m_nVertex-1];
会不会m_nVertex值不对?
m_pParent[i]=new CQueue[nValueKind];
 i 会不会超了 而且一般用个for

delete [] m_pParent[i];
delete [] m_pParent;
会不会 释放了 m_pParent后 释放m_pParent[i] 一般也应该用个for().

#6


up

#1


up

#2


用bt查一下,调用 _int_malloc 的最后一句你的程序语句是哪句。
那句有问题的可能性最大。

#3


把出错的那段代码贴出来

#4


CQueue **m_pParent;
m_pParent=new CQueue*[m_nVertex-1];//错误就出在这里,我用GDB调试时WHERE显示出错地方
m_pParent[i]=new CQueue[nValueKind];
delete [] m_pParent[i];
delete [] m_pParent;

CQueue::CQueue()
{
m_pHead=NULL;
m_pLastAccess=NULL;
printf("constrction\n");
}

CQueue::~CQueue()
{
   PQUEUE_ELEMENT pCur=m_pHead,pTemp;//The pointer of queue chain
   while(pCur!=NULL)
   {
   pTemp=pCur->next;
   delete pCur;
   pCur=pTemp;
   }
   printf("free\n");
}

这是大概的代码意思,能看出什么错误来吗.

#5


CQueue **m_pParent;
m_pParent=new CQueue*[m_nVertex-1];//错误就出在这里,我用GDB调试时WHERE显示出错地方
m_pParent[i]=new CQueue[nValueKind];
delete [] m_pParent[i];
delete [] m_pParent;

没有看懂 
m_pParent=new CQueue*[m_nVertex-1];
会不会m_nVertex值不对?
m_pParent[i]=new CQueue[nValueKind];
 i 会不会超了 而且一般用个for

delete [] m_pParent[i];
delete [] m_pParent;
会不会 释放了 m_pParent后 释放m_pParent[i] 一般也应该用个for().

#6


up