다음 코드는 문자열 c의 내용을 arg [0]에 넣으려고합니다.이 변수 할당의 다른 점은 무엇입니까?
const char **argv = new const char* [paramlist.size() + 2];
argv[0] = c.c_str();
이것은 다른 방법입니다.
argv[0] = "someprogram"
나중에 내 프로그램에서 두 번째 방법은 작동하지만 첫 번째 방법은 오류가 발생한다는 것을 알고 있습니다. 무엇이 다를 수 있습니까? 첫 번째 방법은 어떻게 바뀌어 올바르게 작동 할 수 있습니까?
문제가 발생하는 곳이다 : 나는 다음에 그것을 변경하는 경우, 다음 문제가 발생하지 않습니다
execvp(c.c_str(), (char **)argv);
. 왜 그런가요?
execvp(argv[0], (char **)argv);
'c'변수에 대한 선언이 포함 된 코드를 게시 할 수 있습니까? –
그냥 문자열 c입니다. –
@z_buffer : 질문에있는 코드와 관련하여 * 어디에서 선언했는지는 실제로 중요합니다. 여러분은 여러분의 질문에'string c;'선언, 어떤 식으로'c'를 수정하는 코드, 그리고'argv'에 접근하는 방법을 포함하는 코드 스 니펫을 제공 할 수 있습니까? –