関数を再帰的に呼び出しており、各呼び出しで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;
}
}