我正在递归地调用一个函数,并且正在分配每个调用中分配的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;
}
}
答案 0 :(得分:3)
嗯......这很明显:
不要多次调用该函数,也不要在不再需要时释放所使用的内存。如果调用完成的分配都是同时需要的(一旦递归完成),那么你运气不好,需要: