malloc을 사용하여 c에서 동적 배열을 만듭니다. 예 :c에서 동적 배열에 포인터를 비움
지금은이 같은 기능을하고 그것에 myCharArray를 전달하는 경우myCharArray = (char *) malloc(16);
:
reset(char * myCharArrayp)
{
free(myCharArrayp);
}
것이다 일을, 또는 어떻게 든 포인터 만 (myCharArrayp)의 사본을 확보하고 실제 myCharArray가 아닌가?
실제로 몇 가지 코드를 검토 중이므로 예제는 단순화 된 버전입니다. 실제 코드에는 또 다른 코드 행이 있습니다. myCharArrayp = NULL; 내가 알고있는 것은 일하지 않을 것이다. 그러나 자유가 작동하지 않을지 궁금해지기 시작합니다. 나는 그것이 모두 당신이 제안하는 방식으로 다시 써야만한다고 생각합니다. 고마워 : O) – Henrik
조의 대답에 잘 설명되어 있습니다. 포인터는 스택에 저장된 변수이고 함수는 복사본을 가져옵니다. 그래서 위의 예에서 포인터에 대한 포인터가 필요합니다. –
네,'char **'(또는'void **')가 필요 하겠지만 코드에서'free'를 호출 한 후'NULL'을 포인터에 할당하지 않는 이유는 무엇입니까? "ptr이 NULL 포인터이면 아무 작업도 수행되지 않습니다." 그래서이 함수는 약간 낭비라고 말할 것입니다! – Joe