首页上一页 1 下一页尾页 1 条记录 1/1页
内存越界
发表在C语言图书答疑
2015-01-17
是否精华
是
否
版块置顶:
是
否
CStringList* CListCtrlPop::SelectStringList(int number, CStringList *newstringlist)
{
if(number<0)
{
MessageBox("stringlists.number<0");
return NULL;
}
ASSERT(newstringlist!=NULL);
CStringList* temp=m_strlist;
m_iColumns=number;
this->m_strlist=newstringlist;
this->ClearListAllColumn(); //将上次显示的数据删除;
int length=0; //记录总长度
CString str;
int* col_length=new int[m_iColumns]; //记录每列最长的长度
for(int k=0;k<m_iColumns;k++)
col_length[k]=8;
for(int i=0;i<m_iColumns;i++)
{
this->m_listctrl->InsertColumn(i,m_strlist[i].GetHead()); 调试到这里出错
col_length[i]=max(col_length[i],m_strlist[i].GetHead().GetLength());
POSITION pos=m_strlist[i].FindIndex(1);
for(int j=1;pos!=NULL;j++)
{
str=m_strlist[i].GetNext(pos);
col_length[i]=max(col_length[i],str.GetLength());
}
m_listctrl->SetColumnWidth(i,col_length[i]*10);//LVSCW_AUTOSIZE_USEHEADER
}
for(k=0;k<m_iColumns;k++)
length=length+col_length[k];
m_listctrl->MoveWindow(0,0,length*10+18,this->m_rectShow.Height()-7);
m_rectShow.right=length*10+26;
delete [] col_length;
return temp;
}
内存越界怎样解决
{
if(number<0)
{
MessageBox("stringlists.number<0");
return NULL;
}
ASSERT(newstringlist!=NULL);
CStringList* temp=m_strlist;
m_iColumns=number;
this->m_strlist=newstringlist;
this->ClearListAllColumn(); //将上次显示的数据删除;
int length=0; //记录总长度
CString str;
int* col_length=new int[m_iColumns]; //记录每列最长的长度
for(int k=0;k<m_iColumns;k++)
col_length[k]=8;
for(int i=0;i<m_iColumns;i++)
{
this->m_listctrl->InsertColumn(i,m_strlist[i].GetHead()); 调试到这里出错
col_length[i]=max(col_length[i],m_strlist[i].GetHead().GetLength());
POSITION pos=m_strlist[i].FindIndex(1);
for(int j=1;pos!=NULL;j++)
{
str=m_strlist[i].GetNext(pos);
col_length[i]=max(col_length[i],str.GetLength());
}
m_listctrl->SetColumnWidth(i,col_length[i]*10);//LVSCW_AUTOSIZE_USEHEADER
}
for(k=0;k<m_iColumns;k++)
length=length+col_length[k];
m_listctrl->MoveWindow(0,0,length*10+18,this->m_rectShow.Height()-7);
m_rectShow.right=length*10+26;
delete [] col_length;
return temp;
}
内存越界怎样解决