어.. 그러니까 말야
내가 함수를 호출할건데
그 함수는 그 함수안에서 생성한 로컬변수를 리턴할거란 말이야?
그런데 로컬변수는 그 함수가 끝나는 순간 스택에서 사라져버리잖아?
그래서 리턴을 하긴했는데 그 리턴한 값이 없어져버렸다 이거야
정확하게는 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 |