0
私はCプログラムを書いています。私はchar *メンバーを持つ構造体を持っています。Char *に#defineの値を割り当てることはできますか?
#define SS_Value_1 "Value for SS1"
#define SS_Value_1 "Value for SS2"
struct aSamplestruct {
char* s1;
char* s2;
}aSample;
aSample ss;
fun1(&aSample);
私は関数に構造ポイントを送っていると私は
以下に示すように、ベストプラクティスは、S1にメモリを割り当て、私たちが望む今までに何の文字列をコピーし、使用後、割り当てられたメモリを解放することです知っていますss->s1 = (char*) MEM_alloc(sizeof(char) * (strlen(SS_Value_1) + 1);
strcpy(ss->s1, SS_Value_1);
レポートで変数ss.s1を使用し、memをフリーにします。
MEM_free(ss.s1);
これは問題なく動作します。私は36の異なる条件でいくつかのchar *メンバーのための同じコードを書く必要があります。
他の方法は、メモリを割り当てずに、以下のように#define値を自分の構造体メンバに直接割り当てることができるということです。
ss->s1 = SS_Value_1;
レポートでこの変数を使用し、メモリを解放する必要はありません。 この方法でも、サンプルの実行に問題はありません。私が知りたいのですがどのような
が、これは任意のメモリリークが発生しますか
のですか? 大きなデータの場合は実行を停止しますか?
事前に感謝
よろしく、 のSudhir