전역 포인터 (char*)
을 정의합니까? 그런 다음 상수 문자열의 주소를 지정하십시오. 이 주소는 해제됩니까? 예를 들어 :전역 메모리에 로컬 상수 문자열이 있습니까
static char *str;
const char * test()
{
str = "hello world";
return str;
}
Q1은 : 지금은 안전 어디서나 test
에 의해 얻을 주소의 내용을 사용하는 것입니다.
질문 2 :test
이 DLL에있는 경우. 다른 프로그램에서 옆으로 사용하는 것이 안전합니까?
Q3 : 안전한 경우. 다른 const 문자열을 변수 str
에 재 할당 할 때. 이전 const 문자열을 해제 할 수 있습니까?
다른 const 문자열을 변수'str'에 재 할당 할 때. 이전의 const 문자열은 해제됩니다. – Samuel
아니요. 힙에 할당 된 메모리는'free()'메모리에만 있습니다. ''hello ''는 힙에 저장되지 않습니다. 정적 인 메모리에 저장됩니다. –
'str'을 재 지정하면 정적 메모리 부분의''hello "'문자열을 가리키는 포인터가 없습니다. 이전 문자열이 여전히 정적 메모리 조각에 저장되어 있으면 정적 조각 메모리가 낭비됩니다 – Samuel