これは実行に問題があるようには見えませんが、戻ったときにbuff
自動的に解放される可能性があると考えています。これ*string
により、次回割り当て時に問題が発生し、そのメモリが上書きされます (またはさらに悪化するなど)。これまでのテストでは単に運が良かっただけかもしれないので、試行錯誤でテストしたくありません。私はこれを間違っていますか?
void strCat1000(char *concatDest, char *format, ...)
{
char buff[1000];
va_list arg_ptr;
va_start(arg_ptr, format);
vsnprintf(buff, sizeof(buff), format, arg_ptr);
va_end(arg_ptr);
free(concatDest);
concatDest=buff;
}
より簡潔に言えば、この関数が戻った後、concatDest は解放されたメモリを指していますか?