2011-02-14 2 views
0

모두. 내가 static char* result = malloc(1000*sizeof(char)); ONC + SUN RPC를 기반으로하는 서버 프로그램의 한 절차에서 사용할 때. 그러나이 문자열은 반환되어야하는 문자열입니다.메모리 무료 SUN RPC를 사용하여

정적 인 경우이를 비울 필요가 없다고 생각합니다. 매번 문자열 결과는 메모리 충돌을 유발하지 않고 동일한 주소로 할당됩니다.

맞습니까? 또는 무엇을해야합니까? 이것은 반환 값, 그것을 해제하는 방법은 무엇입니까? 감사합니다

답변

0

질문이 있으면 char*을 반환하는 함수 호출에서 이니셜 라이저를 사용하고 있습니다. 이 경우 정적 저장소 클래스 사용에는 문제가 없습니다. result은 프로그램의 수명 내내 그 값 (할당 한 메모리 주소)을 유지합니다.

그러나이 경우 malloc은 여러 번 호출되지 않습니다. 귀하의 기능을 처음 사용할 때만. 또한 메모리는 여전히 힙에 할당되므로 수행을 마친 후에도 메모리를 비워야합니다. 그러나이 해제는 프로그램의 exit()에서 수행되므로 무시할 수 있습니다.

+1

응용 프로그램이 끝날 때 운영 체제에서 메모리를 자동으로 회수하지만이 방법은 메모리 관리와 관련하여 '게으르다'는 시작과 같은 인수가 아닙니다. 메모리를 할당하는 경우 메모리가 종료 될 때까지도 응용 프로그램의 나중에 언제든지 해제하십시오. – Patrick

관련 문제