遇到不可思忆的问题,调换类的数据成员的位置程序的运行效果会受影响?(内详)
这几天我一直在DEBUG一段代码,这种问题的出现连我都不敢相信,描述如下:
我写了一个配置类,大略如下:
class Config
{
public:
Load(string strFile);
string ip;
unsigned short port;
string str1;
string str2;
};
在其构造函数中调用了Load方法,而Load方法通过读取ini文件初始化了各成员变量,当我将配置信息显示在界面上时发现str1,str2为空,跟踪时发现str1和str2并有内容。后来东改西改问题越来越严重,当多次创建Config类对象后出现异常(BorlndMM.dll访问错误),有时出现什么stli*.dll访问错误,重装cbuilder和装升级包也无效。而今天,突然问题没有再出现,运行也良好,直到我为Load方法设置了默认参数,显示的str1,str2成员变量的内容又总是为空了;由于我怀疑是bcb内存管理(特别是对string)有问题,于是调整各成员的位置,将unsigned short型变量放到最后,天啊,运行OK,改回原来的顺序问题就又出现。
但愿明天醒来后就能忘掉这个恶梦!
问题点数:20、回复次数:0Top




