어.. 그러니까 말야

내가 함수를 호출할건데 

그 함수는 그 함수안에서 생성한 로컬변수를 리턴할거란 말이야?


그런데 로컬변수는 그 함수가 끝나는 순간 스택에서 사라져버리잖아?

그래서 리턴을 하긴했는데 그 리턴한 값이 없어져버렸다 이거야

정확하게는 value가 아닌 reference의 경우에 해당한다( 포인터나 배열 )


자 그래서 여기에 대한 해결방법은

1. 전역변수 선언하여 프로그램 종료시까지 메모리유지(not good)

2. static을 선언하여 프로그램 끝날때까지 해당 변수의 메모리를 유지(not good)

3. malloc(), 즉 heap영역에 메모리를 할당하여, 사용자가 메모리 해제 시점을 지정(반드시 해제 해야함)

4. 호출 쪽에서 인자를 전달하고, 그 인자를 리턴( good )



아 역시 이래서 기본이 중요하군

C언어 뒤쪽 메모리 관리 부분 다시 공부해야할 것 같다

포인터는 역시 알다가도 모를 놈이군

포인터를 살짝 고쳤더니 프로그램이 아예 병신이 되는 경우도 겪었다 방금전에

'C' 카테고리의 다른 글

시간측정  (0) 2013.11.26
DAMAGE: after Normal block (#XXX) at 0xXXXXXXXX  (0) 2013.11.18
시간을 마이크로 세컨드 단위로 받아오고 싶을때  (0) 2013.09.14
strtok  (0) 2013.09.09
string끝에 NULL을 넣을때  (0) 2013.09.09
Posted by bogus919
,