char *XML= new char[flong+1];
......
delete []XML;其中flong是我得到应该分配的内存大小,程序运行到delete时就出错,为什么;
然后我换成下面的方法
char *XML= (char*)malloc((flong+1)*sizeof(char));
......
free(XML);
依然出错,怎样释放动态大小的内存呢;
若我指定大小就可以如
char *XML= (char*)malloc(1024*sizeof(char));
......
free(XML);为什么?

解决方案 »

  1.   

    char   *XML=   new   char[flong+1]; 
    ...... 
    delete   []XML; 这样的使用并没有错
    怀疑是你分配的大小不够,使用过程中越界,导致delete的时后出错
      

  2.   

    比如你要分配空间给4个整形用
    不能用new char[4],而要new char[4*sizeof(int)];
      

  3.   

    void main(){
    int flong=10;
    char* XML=new char[flong+1];
    delete []XML;
    }
    没有问题啊
    得看看你的省略号
      

  4.   

    分配的大小不够,使用过程中越界,导致delete的时后出错
    分配完了检查一下分配是否成功吧