嗨,我的代码面临内存错误。我使用了gdb并找出了内存故障发生的位置。但我无法解决这个问题。发生内存错误的代码行如下所示。请帮助我的朋友。
void CJob::print_parm_file(){
int m_nFuncid;
CCmdset* pCmdset = NULL;
const int size=1024;
char fname[80];
char dbg_buf[size]="";
unsigned int i, gotit=0;
for (i=0; i < entries(); i++)
{
pCmdset = (CCmdset*) at(i);
//RWCollectableString *cmdset = (RWCollectableString *)pCmdset->at(0);
//RWCString m_Function=cmdset->data();
CXmlobj *xobj = (CXmlobj *)pCmdset->at(0);
cout <<"The value of m_name.data() //segfault issue is : " << xobj->m_name << endl;
cout <<"The value of m_name.data() //segfault issue is : " << xobj->m_name.data() << endl;
RWCString m_Function=xobj->m_name.data(); //segmentation fault occurs in this line
我已经打印了 m_name.data() 的值来检查其值。 当我尝试打印其值时,cout 语句本身发生了分段错误。
注意:此问题仅在 Linux 服务器中发生。该代码在Unix服务器中运行良好,没有任何问题。
请帮助我!谢谢!!!
我有根据的猜测是m_name
属于std::string
型。不能保证空字符会终止由 data()
返回的值所指向的字符序列。简而言之,您的打印件可能会访问比该字符串实际包含的更多的元素,从而导致此分割错误。
尝试在字符串末尾添加