1

この質問はこの質問に関連しています。それぞれ 150b の文字配列を定義し、文字列を次のようにコピーします。

const gchar  *strAuth; 
gchar *strings[18][150];
strcpy(strings[0],strAuth);

これは、ほとんどの場合、膨大なメモリの浪費であり、極端な場合には不十分な場合があります。

参照されている質問で示唆されているように、「ポインターの配列を作成し、文字列に動的にメモリを割り当てる」ことをお勧めします。

どうすればこれを達成できますか?親切に助けてください。

4

2 に答える 2

3

mallocを使用して文字列にスペースを割り当て、gchar *strings[x]割り当てたい文字列の各 x に返されるポインターを割り当てます。このようなもの:

gchar *strings[18];
strings[0] = malloc(strlen(strAuth) + 1);
strcpy(strings[0], strAuth);

これは、ポインターの配列 (1 行目) と、null ターミネーターを含む文字列に対するメモリの動的割り当て (2 行目) です。

で特定の文字列を使い終わっstringsたらfreefree(strings[0]);. 解放されたポインターは、解放後に NULL に設定することをお勧めします。

于 2013-06-11T14:56:48.247 に答える