私はchar* arguments[]
を渡す必要があるC++関数を持っています。次のようにこの関数のプロトタイプは次のとおりです。 void somefunc(char* arguments[])
関数からchar *ポインタの配列を生成
この関数に上記の配列を渡すために、私は私にこのchar* array
出力を返すことができます別の関数からこの配列を生成していますが、これは、このようsomehwhatに見えます。 genArgs(3, a.c_str(), b.c_str(), c.c_str())
またはgenArgs(2, a.c_str(), b.c_str())
私は文字を使用せずに上記のchar *の配列を生成するにはどうすればよい
*:
char** genArgs(int numOfArgs,...)
{
va_list argList;
char** toRet = new char*[numOfArgs];
va_start (arguments, numOfArgs);
for(int cnt = 0; cnt < numOfArgs ; ++cnt)
toRet[cnt] = va_arg(argList, char*);
va_end(arguments);
}
は、私が実際に私のようなものを関数への入力を渡すことになることを考えると、正しく上記の関数を作成する方法を混乱しています*(これはメモリリークを避けるために関数から戻る前に削除する必要があるからです)。それは本当ですが、あなたはnew[]
に割り当てられ、最終的delete[]
へのポインタが必要なこと:
返されたデータを削除するのは、呼び出し元が責任を負う "genArgs"契約(ヘッダー記述)に入れてください。このように考えると、独自のmalloc関数を作成しています! – jiveturkey