定义了
CArray<CStringArray*,CStringArray*> arrItems;cstringarray item;
item.Add(..);
item.Add(..);
然后添加 arrItems.Add(&item);但是,添加以后,再输出arrItems.getAt(0)->getAt(1)的时候,就会指针出错。得出arrItems.getAt(0)->getSize()==2。为什么输出第二个元素的时候出错呢?
CArray<CStringArray*,CStringArray*> arrItems;cstringarray item;
item.Add(..);
item.Add(..);
然后添加 arrItems.Add(&item);但是,添加以后,再输出arrItems.getAt(0)->getAt(1)的时候,就会指针出错。得出arrItems.getAt(0)->getSize()==2。为什么输出第二个元素的时候出错呢?
CArray<CStringArray*,CStringArray*> arrItems; CStringArray item;
item.Add("123456");
item.Add("456789"); arrItems.Add(&item); CStringArray* Temp = arrItems.ElementAt(0);
CString tt = Temp->ElementAt(0);//输出 结果为"123456"
{
.........SaveCurPage(nOldItem);FillInList(infoString);
}
void CSetProject::SaveCurPage(CString m_string)
{
CStringArray item;
item.Add("123");
item.Add("456");
arrItems.Add(&item);
afxmessagebox(arrItems.GetAt(0)->GetAt(0));//此时可以正确输出
}void CSetProject::FillInList(CString infoString)
{
for(int i=0;i<arrItems.GetSize();i++)
{
if (arrItems.GetAt(i)->GetAt(0).CompareNoCase(infoString)==0)//此时报出指针错误 当i==0时,arrItems.GetAt(i)->GetAt(0)就报错
{
.....
}
}为什么这样就报错呢?郁闷
你这是要做什么判断?
FillInList中,我重新定义了一个int变量,去取arrItems.GetAt(0)->GetSize()的值,这时候,就只能得到0xffffff了。不知道为什么
栈上的临时变量在他的生存周期之外就不能访问了.
记得在程序退出的时候把数组中的元素挨个delete.
item.Add("456789"); arrItems.Add(&item);
CString infoString = "123456";
for(int i=0;i<arrItems.GetSize();i++)
{
if (arrItems.GetAt(i)->GetAt(0).CompareNoCase(infoString)==0)
::AfxMessageBox("相同");
else
{
::AfxMessageBox("不同");
}
}
没有出现任何问题....
{
//// TODO: 在此添加控件通知处理程序代码 CSetPicChange pic;
pic.GetPic("c:\\Pic01.JPG",1536,2048,1024,768);
item.Add("123456");
item.Add("456789");
arrItems.Add(&item);
}void CWindowsBackDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString infoString = "123456";
for(int i=0;i<arrItems.GetSize();i++)
{
if (arrItems.GetAt(i)->GetAt(0).CompareNoCase(infoString)==0)
::AfxMessageBox(arrItems.GetAt(i)->GetAt(0));
else
{
::AfxMessageBox("不同");
}
}
}
完全正常显示~
exe - 应用程序错误
---------------------------
"0x6bc87bc2" 指令引用的 "0xcccccccc" 内存。该内存不能为 "read"。
要终止程序,请单击“确定”。
要调试程序,请单击“取消”。
---------------------------
确定 取消
---------------------------
报这个错哪里有不同啊。item定义有什么不同嘛?是new出来的?
CArray<CStringArray*,CStringArray*> arrItems;
CStringArray item;
pSA->Add("111");
arrItems.Add(pSA);
你试试这么做访问数组还崩溃不?记得程序结束要释放指针哈.