cstring变量与atlsimpstr.h 的异常【创+转】

异常提示:0x78a23bbb (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0x00001010 时发生访问冲突。

 

出错代码段:

void 函数名(CStringArray* abc)
{
 int j = 0;CString str;

 str=abc->GetAt(j);
 if(j++ < abc->GetSize())...语句体...;

 str=abc->GetAt(j);
 if(j++ < abc->GetSize())...语句体...;

...

}

 

错误原因分析【来自网络http://fwq.web521.com/host/P1045/A0788855.shtml】:

cstring占用内存比较大,尤其是循环创建一个cstring局部变量时,由于变量是系统自己释放,有时候可能释放的不及时,就容易出问题。所以说在循环里面最好不要创建cstring局部变量

 

可修改为以下:

void 函数名(CStringArray* abc)
{
 int j = 0;CString str1,str2;//或数组

 str1=abc->GetAt(j);
 if(j++ < abc->GetSize())...语句体...;

 str2=abc->GetAt(j);
 if(j++ < abc->GetSize())...语句体...;

...

}

你可能感兴趣的:(网络,mfc)