위의 예제를 보면, inputString() 함수와 같이 경우에 따라 함수 내부에서 문자열을 입력 받은 후, 입력 받은 문자열을 돌려 받아야 한다.
하지만, 입력 받은 문자열을 저장하기 위해 inputString() 함수 내에 선언되어 있는 stringValue 변수가 메모리의 stack 영역에 저장되는 지역변수이므로 inputString() 함수가 종료될 때, 메모리 상에서 사라지게 된다. 이것은 원하지 않는 결과값을 얻게 되는 원인이 된다.
- 결과값
이러한 점을 해결하기 위해 아래와 같은방법이 있다.
먼저, 기존의 방법과 마찬가지로 임의의 크기로 선언된 char형 배열에 문자열을 입력받는다. 두 번째, 입력받은 문자열 크기만큼 heap 메모리 영역에 동적할당을 해준다. 마지막으로 입력받은 문자열을 strcpy(strcpy_s) 함수를 통해 동적할당 받은 temp에 복사한 후, 이 temp를 반환하면 된다.
이 방법은 동적할당을 통해 heap 메모리 영역에 생성되는 공간이 stack 영역과는 다르게 함수의 종료 후에도 사라지지 않고 유지되게 때문에 가능하다.
- 결과값