2012-04-17 91 views
0


我递归调用的函数,这是分配2048字节被分配在每个call.At启动应用程序运行时按规定但后来却是越来越给予坠毁“没有足够的存储可用于处理此命令”的错误。内存分配器返回坏的内存指针,为此应用程序正在崩溃。任何人都可以帮助我解决这个问题。没有足够的存储是可用来处理此命令

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

Buy more memory? – Nick 2012-04-17 09:29:07

+0

可能有[系统错误。代码:8.没有足够的存储可用于处理此命令](http://stackoverflow.com/questions/507853/system-error-code-8-not-enough-storage-is-available-to-process-this -命令) – 2012-04-17 09:34:30

回答

3

嗯......这是一种很明显的:

不要调用函数这么多次,也没有释放,只要它不再需要使用的内存。如果都需要在同一时间(一旦完成递归)由调用来完成的分配,那么你的运气和需要:

  • 购买更多的内存,
  • 想出一个更紧凑型表示,
  • 将求解分解为更小的步骤。
相关问题