我先使用整体new,然后delete其中部分不用的多余空间,结果不对呀,代码是这样的:
  myWbstruc1=new Wbstruc[100]; 
  ...
  for (int kk=50; kk<100) 
  delete &myWbstruc1[kk]; //这是我定义的结构体,为什么执行到这里不行呀?struct Wbstruc 

 char *ss1; 
 char *ss2;
}   

解决方案 »

  1.   

    你定义了 myWbstruc1=new Wbstruc[100]; 就必须 delete []myWbstruc1; 完全释放
      

  2.   

    呵呵,在堆上申请了数据
    要delete []myWbstruc1C * p = new C[xx]
    xx表示数组的长度
    要和delete []p
    对应的
      

  3.   

    for这句没写全,要么没释放完全
      

  4.   


      既然这样的话,那有没有好的办法可以在最后确定数组长度的情况下写入另一个new出来的数组中呀?,能不能拷贝指定个数的结构体数据拷贝,比如:
          strxcpy(temp,dest, count);
        如果这样的话,拷贝的是否成了共用原来的dest地址呢?这里头总有些易混淆的东东!!
      

  5.   


     还有,我需要将表中取出的日期和时间值进行加减运算,该如何转换呢?
     比如:
      float ss; 
      dt=rs->getcollect("date");
      rt=rs->getcollect("time"); 
      ss= dt.date+rt.date;  //我测试了一下发现这些值是类似-8.2999e+061的值,这应该是不对的!!
     那该如何取到这个日期值呢?
      

  6.   


    int pi  = new int(10) ; delete pi ;
      

  7.   


    int pi = new int[100]  ; 
    delete [] pi ;
      

  8.   


     我的dt,rt是_variant_t类型,主要是为了和_RecordsetPtr等取数据的类型匹配,就是不知道取日期字段的数据后的.date属性能不能得到正确的日期值?
      

  9.   


     问题已经解决,使用COleDateTime类型即可.
     还有一个问题,使用_ConnectionPtr指针多次执行Execute命令时总会出错,部分代码如下:
     for ( int s=0; s<totalsess; s++) 
      {
      strSQL.Format("insert into ttt values('%s')",Pgtemp[s]); 
      try 
      {
       m_pCon->Execute(_bstr_t(strSQL),&RecsAffected,adCmdText); 
       }
      catch(...) 
      {
       AfxMessageBox("写表失败,请确认表ttt是否存在!");  //执行了部分循环后程序就跳到这里来了!
       if (m_pCon->State) 
         m_pCon->Close();  
       return;
      }
     } 
     大家有没有碰到这个问题的,是怎么解决的?先谢谢了!!!
     
      

  10.   

    for (int kk=50; kk<100) 
      delete &myWbstruc1[kk]; //这是我定义的结构体,为什么执行到这里不行呀?堆上分配的内存不能这样释放delete []myWbstruc1;