그래서, 나는이 C++ 책에서 볼 기본 텍스트 입력 기능의 맥락에서이 질문 : 그래서 온도가 80 개 문자의 배열을 선언포인터가 할당 된 메모리가 함수 뒤에는 있지만 배열에는없는 이유는 무엇입니까?
char *getString()
{
char temp[80];
cin >> temp;
char * pn = new char[strlen(temp + 1)];
strcpy(pn, temp);
return pn;
}
, 그 메모리 자동 변수는 getString()
한 번에 해제됩니다 보고. 어떤 이유로 든 temp
을 반환했다면 함수가 끝나면 메모리가 해제되었으므로 함수 외부의 사용법은 신뢰할 수 없습니다. 그러나 같은 컨텍스트에서 pn
을 선언하고 있기 때문에 메모리가 어떻게 삭제되지는 않습니까?
그리고 코어 덤프없이 실행 되었습니까? strlen (temp) +1이 아닌 strlen (temp + 1)이어야한다고 생각합니까? – KedarX