高分求教:关于CList,CString的奇怪问题
问题是这样的:
环境:windows Xp, vs2008,MFC, 多文档多视图
1)为了给各个文档都应用同一份初始数据,我在APP类里加了一个数据结构:
STATICDB m_stStaticDB; //静态信息库,用于模块创建的初始化模版
2)这个数据结构里面包含了一些CList, CString的成员,如下列出了一些成员(不全):
CString strCodeStart; //起始代码行字符串
char cCodeStartType; //用于固定代码行的代码模型选择,为0表示无效
CList<SCRIPTELEMENT,SCRIPTELEMENT&> listScriptElementList; //元素/分支列表
CString strCodeEnd; //结束代码行字符串
char cCodeEndType; //用于固定代码行的代码模型选择,为0表示无效
3)我在Mainframe的OnCreate函数中给这个结构中的变量赋初值:
m_stStaticDB.stInitData->stScript.cCodeEndType=1; //这个是给Char型成员赋值
m_stStaticDB.stInitData[0].stScript.strCodeStart="test"; //这个是给CString型成员赋值
4)编译通过
5)运行过程中报错,指针已经跑飞,我跟了一下,是在第二次进入一个函数后,返回的时候出的问题。
6)我把变量赋初值部分的给CString 和CList赋初值的代码注释起来,程序即可正常运行。
m_stStaticDB.stInitData[0].stScript.strCodeStart="test"; //即把这句注释起来
7)我自己考虑了一下,是不是这样的原因:
CString 和Clist 这样的类放在结构里面,在创建的时候会有问题?
具体是怎么样的,实在是想不通,还请高手指点!
8)还有就是请教如果这样的方式行不通,那么是不是必须用数组代替CString,而Clist也必须动态分配?有没有好一点的解决方案?谢谢!