私は文字列を束縛し、結合された文字列を返す小さな関数を作った。しかし、関数の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;
}
はい。私はすべてを自動化し、コードで自分の人生を楽にするこの機能を果たしました。しかし、StrCatが大文字であることに注意してください。標準のstrcat呼び出しではありません。 –
ちょうど今気付いた、 'StrCat'は 'strcat'に似ています。私はそれを 'myStrCat'と呼ぶことを勧めました。 –
ああ、それは意図的なもので、私はそれでうまく動作し、他の文字列関数でやった。しかし、あなたがそれを悪い習慣と考えるなら、私はそれを変えるでしょう。 –