2009/07/06 3

전역변수와 정적변수의 차이점 : Difference Between Static & Global Variable

함수안에 선언된 변수는 그 함수를 빠져 나가면 사라진다. 할당되었던 메모리는 해제되고 저장되어 있던 값도 사라진다. 이러한 특성 때문에 자동변수(auto variable) 이라고 부르기도 한다. 그 함수 내에서만 유효하다고 해서 지역변수라고 부르기도 한다. 따라서 그 함수로 들어올 때 마다 변수가 다시 메모리 할당된다. 그래서 함수간 또는 파일간에 변수 값을 공유하고자 할 때는 전역변수(global variable) 또는 정적변수(static variable)를 사용하는데 이 두 변수간의 차이를 정확히 이해를 하고 사용해야 한다. 전역변수와 정적변수는 lifetime은 동일하다. 즉, 해당 프로그램이 죽을 때까지 한번 할당된 변수 메모리와 값은 유지된다는 점이다. 반면에 scope는 서로 다르다. 전역변..

멜번에서 스키타기

멜번에는 겨울이라도 비만 죽죽 내리고 눈은 오지 않습니다. 뭐 멜번 뿐만아니라 호주 전역에서 겨울에 눈을 보기 어렵지요. 그래서 스키를 타려면 높은 산에 올라가야 합니다. 멜번 북쪽에는 제법 높은 산이 몇개가 있고 산위에는 눈이 있습니다. 멜번에서 3시간 정도 차를 타고 가면 스키장에 도착할 수 있습니다. 우리는 그나마 가장 가까운 마운트불라(Mt Buller) 스키장에 가보기로 하였습니다. 장비 대여 준비 미리 사전조사를 해 본 결과 스키장에서 렌트할 경우 기다리는 줄이 너무 길다고 해서 아예 빌려서 가려고 알아보았습니다. 버우드에 있는 샵에 전화했더니 알파인스키는 없고 크로스컨트리 스키만 있다고 하고, 또 다른 샵은 스키를 빌리려면 며칠 전에 예약을 미리 했어야 한다고 해서 일단 미리 빌려서 가는 것..

dlsym error Function not implemented

dlcall 할 때 아래와 같은 오류가 발생했다면 function name 이 해당 라이브러리( .so) 안에 없는 경우이다. 실제로 그러한 이름의 function을 extern 으로 선언되어 있지 않거나 틀린 함수명으로 호출한 경우이다. Shared Library Name=[FEE][FEE09199_Main] BS_DlOpen START dlsym error Function not implemented (FEE09199_Main) 위의 경우 FEEO9199_Main 이 파일안에 extern 함수로 존재했으나 문자 O를 숫자 0 으로 잘못 타이핑한 경우였다.

반응형