小企鹅 发表于 2014-6-17 22:23:34

两次递归同一个函数就出错。请教啥情况!

      sub   eax, _PAGESIZE_         ; decrease by PAGESIZE
      test    dword ptr ,eax   ; probe page.
      jmp   short cs10

if (dis.available() > 4)这个条件是没有问题的,调试模式第二次进入这个递归就溢出了!


代码块

ParseData(CDataInputStream &dis){        try        {                ////数据长度                int data_length = dis.readInt();//数据包的长度                if(data_length < 32)                        return;                byte command;//command                dis.read(command,32);                command = '\0';                CString str_command(command);                this->token = dis.readInt();//token                int srcLength = data_length - 36;//减去token和command长度-32-4                byte *srcData = new byte;//就等于content的长度                dis.read(srcData,srcLength);                unsigned long dLen = 512000;//500kb数据                byte temp = {0};//500kb数据                uncompress(temp,&dLen,srcData,srcLength);                delete[] srcData;                if (dis.available() > 4)                        ParseData(dis);        }        catch (CException* e)        {                char errorMsg;                e->GetErrorMessage(errorMsg,INFO_SIZE);                strcat_s(errorMsg,"P002");                GT_WriteReleaseLog(errorMsg);        }

小企鹅 发表于 2014-6-17 22:45:25

好像是局部变量,改成new手动分配内存就不会出错了。
byte* temp = new byte;

Road_7 发表于 2014-6-18 19:20:47

代码能换个格式吗,看着累
页: [1]
查看完整版本: 两次递归同一个函数就出错。请教啥情况!