내가 원하는 것은 char** stringarr
입니다.c : char *를 지우지 않는 free char *
일부 지역에서는 stringarr[index]
, char*
을 지정하고 싶습니다. 그래서 char **
의 일부 위치에 문자열 (char*
)을 저장하고 싶습니다.
stringarr[0] = "Hello", stringarr[1] = "goodbye"
문제는 내가 문자열을 들고 char *
을 확보 할 것입니다,하지만 난 물론 stringarr[0]
의 수행 할 때 더 이상 해제 char*
를 가리 킵니다 : 예를 들어 은 프로그램이 실행되지 후.
어떻게 해결할 수 있습니까?
설명 : 문자열 배열 (char **)에 문자열 (char *)을 추가하고 싶습니다. 그런 다음 문자열을 해제하지만 문자열 배열은 해제하지 않습니다. char **에 영향을주지 않고 어떻게이 작업을 수행 할 수 있습니까?
_ 특정 문제를 명확히하거나 추가 세부 정보를 추가하여 필요한 것을 정확하게 강조하십시오. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. How to Ask 페이지에서이 질문을 명확히하는 데 도움을 받으십시오 ._ –
[How to Ask page] (http://stackoverflow.com/help/how-to-ask) – gavv
위의 코드는'stringarr [0]'을 가리 키도록 설정합니다 해제 할 수없는 문자열 리터럴로 당신이 할 수있는 일은'stringarr [0]'을'NULL'과 같은 다른 것으로 설정하는 것입니다. 대신에'char * foo = malloc (10); strcpy (foo, "fred"); stringarr [0] = foo;'를 호출하고 나중에 free (foo)를 호출하면, 코드가'stringarr [0]'이 가리키는 버퍼에 결코 접근하지 못하도록 코드에 달려있다. 당신이 그것을 달성하는 방법은 당신에게 달려 있습니다. 'foo'를 해제 한 후'stringarr [0] = NULL;'을 다시 설정하고 항상'stringarr [0]'이 NULL인지 여부를 확인하는 코드를 작성하는 것이 한 가지 방법입니다. –