목록포인터 (2)
DNF LOVE
함수, 변수를 호출할 때 보통 Call By Reference 혹은 Call By Value에 대해 설명을 들었을 것이다. 이 둘의 정확한 설명과 차이점은 무엇인지 이번 포스터에서 다뤄보도록 하겠다. 1. Call By Value(값에 의한 호출) 함수가 호출 될때, 메모리 공간 안에서 함수를 위한 공간이 생성이 되며 함수가 종료되면 해당 공간은 사라진다. Call-By-Value는 값에 의한 호출 방식으로, 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역변수로 사용된다. 따라서 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다. ** Stack Frame : C++의 경우 서브루틴(함수)가 호출되면 할당되는 메모리 블록이다. ..
C와 C++의 가장 큰 장점이자 특징은 무엇일까? 그것은 바로 메모리 관리를 개발자가 직접한다는 것이다. JAVA와 C#같은 경우는 각각 JVM, .Net 의 VM에 의해 GC가 관리된다. 그러나 C와 C++은 각각 malloc / new 연산자를 통해 메모리를 할당하고 delete를 사용하여 메모리를 해제한다. 이를 동적할당이라 한다. 프로그램이 변수를 인스턴스화(메모리에 데이터를 할당하여 사용할 수 있도록 함) 할 때 사용 가능한 메모리 주소가 변수에 자동으로 할당되고(OS의 몫) 변수에 할당된 값은 이 메모리 주소에 저장된다. 메모리 관리를 개발자가 직접하기 때문에, JAVA와 c#과 다르게 C와 C++에서는 메모리에 직접 다가가는 포인터 개념을 사용한다. 포인터란? 어떠한 값을 저장하는 것이 아닌..