>>48
要は、既存のmain()関数を流用したいから、array<System::string>からargc, argvに変換したいと言うことだな。
・newとmalloc()を混ぜるな。
・argvはポインタの配列だ。そこをきちんと理解すること。
・sprintf()のフォーマットが"%s"だけなんて無意味なことはするな。

取り敢えず、argvの初期化はこれでいいよ。
char ** argv = (char **) malloc(sizeof(* argv) * argc);
そうなれば、当然argv[i]の代入はこうなる。
argv[i] = (char *) malloc(sizeof(* argv[i]) * strArray[i].size() + 1);
strcpy(argv[i], strArray[i]);
そうそう、argv[argc]にNULLを入れるのも忘れずに。