할당
[JS] var, let, const의 차이 ⏤ 변수 선언 및 할당, 호이스팅, 스코프
변수 먼저 자바스크립트에서 변수가 무엇인지 알아보자. 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 말한다. const myNumber = 23 // 변수명(식별자): myNumber // 해당 값의 위치(메모리 주소): 0012CCGWH80 // 변수 값(저장된 값): 23 자바스크립트는 매니지드 언어(managed language)이기 때문에 개발자가 직접 메모리를 제어하지 못한다. 따라서 개발자가 직접 메모리 주소를 통해 값을 저장하고 참조할 필요가 없고 변수를 통해 안전하게 값에 접근이 가능하다. 변수명(식별자)인 myNumber는 변수의 값이 아닌 메모리 주소를 기억하고 있다. 변수명을 사용하면, 자바스크립트 엔진이..
C# 클래스 할당시 메모리 구성 디버깅
디스어셈블링 및 실제 메모리를 디버깅하면서 데이터와 객체를 할당시 어떤 구조로 메모리에 올라가는지와 C#에서 클래스를 할당하면, 힙이 어떻게 동작하는지를 보자 쉽게 보기 위해서 예제는 x86(32bit)로 컴파일되었고 이를 기준으로 설명한다 예제로 사용할 모습은 이와 같다. 아무 클래스나 하나 만들고 그 안에 문자열 하나와 int 하나를 선언, 구조체 역시 메모리를 살펴보기 쉽게 int형 두개로 선언했다 먼저 Case1 메소드를 디버깅해보자 Watch창에서 살펴보면 현재 testObject의 상태를 알 수 있고, '&testObject'로 testObject의 실제 메모리 주소를 볼 수 있다. C# 문법에서는 직접적인 포인터를 사용하려면 unsafe 옵션을 이용해서 사용 할수 있으나, 이는 그리 권장하는..