std::vector<Struct_Data*> vecData;
while(!m_pRecSet->adoEOF)
{
 ...
 ...
 Struct_Data *pData = new Struct_Data;
 ...
 ...
 vecData.push_back(pData);
 m_pRecSet->MoveNext();
}
m_pRecSet->Close();

解决方案 »

  1.   

    1.分别分配内存
    2.ado难道不能得到所有的记录数??
      

  2.   

    将new换成remalloc函数,这样的话,你每次在循环里分配时,它会根据nRecordIndex的值重新分配,并保留原来分配的内存不动,即会接着原来的内存重新分配且不释放原来的内存。
      

  3.   

    pRst->getRecordCount()可以获得记录数
    不定长内存你可以用CMemFile(跟CFile用法差不多,但是是在内存中的),
    原理的话可以参考vector的内存分配机制:
    先申请一块大小为N的内存块,不够时再申请大小为2N的内存块,将原来的拷过来并释放掉