没有足够的存储空间来处理此命令

时间:2012-04-17 09:26:54

标签: c memory-management


  我正在递归地调用一个函数,并且正在分配每个调用中分配的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;
  }
}

1 个答案:

答案 0 :(得分:3)

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

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

  • 购买更多内存,
  • 找出更紧凑的表示,
  • 将解决方案分成更小的步骤。