【问题标题】:Not enough storage is available to process this command没有足够的存储空间来处理这个命令
【发布时间】:2012-04-17 09:26:53
【问题描述】:


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

【问题讨论】:

标签: c memory-management


【解决方案1】:

嗯...这很明显:

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

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

【讨论】:

    猜你喜欢
    • 2010-10-07
    • 2018-08-30
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多