程序中有这样一段代码while (!rs.eof)
{
    CObject *obj = new CObject;
    ......
    arrayOfObjects.Add (obj);
}arrayOfObjects.Serialize (dataFile);// start
for (int i=0; i<arrayOfObjects.GetSize(); i++)
    delete arrayOfObjects[i];
// end如果去掉start 和 end之间的代码, 序列化没有问题,但是如果加上,序列化后的文件中会出现乱码.因为一次性要查多个数据库表,查出来的数据量特别大,所以需要边查边写文件,写完文件后要及时回收内存,再将文件压缩后传递给客户端. 所以不太可能写完文件后再一次性回收内存.请问为什么会出现乱码?serialize难道新建了个线程来做这个事情?如果不是的话我这样子写是可以保证写完文件的啊.

解决方案 »

  1.   

    查到有两个类没有写=操作符,基本都没有拷贝构造函数,类里面有许多成员是CString, 在操作符里基本都是这样写的cosnt CXXX & CXXX::operator=(const CXXX & xxxSrc)
    {
        m_strFilename = xxxSrc.m_strFilename
        .....;
        return *this;
    }操作符的函数我都加上了,但是拷贝构造函数没有写,因为类的数目比较多,一个个写下去可能要一个星期. 如果没有写拷贝构造函数,只有这个操作符,那么序列化的时候也会有问题么?