Cのポインターのポインターの末尾に文字列を追加しようとしていますが、以下のコードを使用していますポインタへのポインタがすべての割り当てられたメモリではない値を持つので、私が割り当てたものを解放することはできません。ポインタへのポインタの最後に文字列を追加するにはどうすればよいですか?Cのポインター(**ポインター)のポインターの末尾に文字列を追加する方法
int add_environ(char *str, char **envp)
{
char **r;
int i;
r = envp;
i = 0;
while (r[i])
{
i++;
}
//how can I add string without using malloc?
// my problem is I can't free this allocated memory
r[i] = malloc(strlen(str));
if (r[i])
{
r[i] = str;
r[++i] = 0;
return (1);
}
return (0);
}
私にとって、私は何も理解していません。 –
あなたは 'setenv()'や 'putenv()'をシミュレートして環境を変更しようとしていますか、環境リストのような構造を操作しているのですか、 'envp'を誤って選択して、 'char *'の配列?あなたのコードがそれを担当しているかどうかにかかわらず、配列がどのように管理されているかを知る必要があります。また、時にはスペースをさらに割り当てる必要があります。 'char *'の配列がどこにあるのかを呼び出し側コードに伝える必要があります。関数に 'char ***'を渡すか、毎回開始を返します: 'char ** add_environ(const char * str、char ** envp)'。 –
はい両方とも – julekgwa