两次递归同一个函数就出错。请教啥情况!
sub eax, _PAGESIZE_ ; decrease by PAGESIZEtest 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); }
好像是局部变量,改成new手动分配内存就不会出错了。
byte* temp = new byte; 代码能换个格式吗,看着累
页:
[1]