0


我正在递归调用一个函数,它在每次调用中分配 2048 个字节。在开始时,应用程序按要求运行,但后来由于给出错误“没有足够的存储空间来处理此命令”而崩溃. 并且内存分配器返回错误的内存指针,应用程序正在崩溃。任何人都可以在这个问题上帮助我。

char* parser(char *data){
   char *string,*ptr,*result;
   int len;

   len=strlen(data);
   ptr=strstr(data,"search");

   if(ptr){
    buf = (char *)GlobalAlloc(GPTR,sizeof(char)*len+1);
    strncpy(buf,data,ptr-data);
    buf[ptr-data]='\0';
    result=parser(buf); 
    GlobalFree(buf);
    return result;
  }
}
4

1 回答 1

3

嗯......这很明显:

不要多次调用该函数,也不要在不再需要时立即释放使用的内存。如果调用完成的分配都需要同时(一旦递归完成),那么你就不走运了,需要:

  • 购买更多内存,
  • 找出更紧凑的表示,
  • 将求解分成更小的步骤。
于 2012-04-17T09:32:51.093 回答