文字列を連結し、結合された文字列を返す小さな関数を作成しました。ただし、関数の 3 番目の変数にメモリを割り当てているため、メモリは関数が終了したときに解放されますか、それともそこにとどまり、後で解放する必要がありますか? それを解放する必要がある場合、それを行うための最もスタイリッシュなソリューションは何ですか?
これがテストコードです。動作しますが、ツールでそのメモリが解放されているかどうかはわかりません。
#include <stdio.h>
#include <math.h>
#include <string.h>
char * StrCat(const char *st1, const char *st2){
char *string = calloc((strlen(st1) + strlen(st2) + 1), sizeof(char));
strcat(string, st1);
strcat(string, st2);
return string;
}
int main(){
printf("String: %s\n", StrCat("HELLO ", "WORLD"));
return 0;
}