스터디/C++55 [ C++ ] new 와 delete를 이용한 메모리 동적할당, 메모리 누수(Memory Leak)에 대하여.. 우선 동적 할당이란 " 프로그램 실행 중에 동적으로 메모리를 할당하는 것을 말합니다." 즉, 런타임 중에 메모리를 할당한다는 것이고, 동적으로 할당된 메모리는 Heap영역에 할당이 됩니다. 프로그램을 개발하다 보면 상황에 따라 메모리 공간을 실시간으로 확보해야 하는데 그때 사용하는 게 메모리 동적 할당입니다. C에서는 malloc로 힙 영역에 할당해주고, free로 힙에 할당된 메모리 공간을 소멸합니다. C++에서는 new로 힙 영역에 할당해주고, delete로 힙에 할당된 메모리 공간을 소멸합니다. 하지만 C++에서는 C언어의 헤더 파일을 추가하는 것도 가능하기 때문에 malloc와 free도 사용이 가능합니다. 그러면 먼저 malloc와 free를 이용한 메모리 동적 할당 예제를 보겠습니다. char.. 2019. 9. 6. [ C++ ] Call-by-value , Call-by-reference 함수의 호출 형태는 크게 Call-by-value와 Call-by-reference로 나뉜다. Call-by-value * Pass-by-value 라고 불리기도 함. Call-by-value는 값에 의한 호출로, 함수의 인자로 넘기는 값을 복사해서 새로운 함수에 넘겨주는 방식이다. 즉, 값을 인자로 전달하는 함수의 호출 방식이다. 예로 들어 두 변수의 값을 바꿔주는 함수가 있다고 가정하자. void swap(int a, int b) { int temp = a; a = b; b = temp; } 겉으로 봤을 때는 a와 b 값을 바꾸는건 성공이다. 하지만 함수 외부에 선언된 변수 또한, 바뀌었을까? num1의 값은 a에 복사되고 num2의 값은 b에 복사되어 전달하기 때문에, num1과 num2의 값이 바.. 2019. 9. 5. [ C++ ] const ( 상수 )의 활용 const 키워드와 함께 정의한 변수의 값은 수정이 불가능하다. 즉, 프로그래밍시에 바뀌어서는 안될값이 있을 경우 활용할 수 있다. 또한 코드가 길어질 경우 실수로 변수의 값이 바뀌어 지는것을 방지할 수 있다. const의 예는 다음과 같다. const int num = 10; -> "변수 num을 상수화" 그래서 num 값을 변경시에 컴파일 에러가 발생하는 것을 볼 수 있다. 그럼 포인터의 예를 살펴보자. const int *ptr1 = # -> "포인터 ptr1을 이용해서 num의 값을 변경 할 수 없음." 그래서 ptr1로 ptr1가 가리키고 있는 값을 변경할려고 할 때 컴파일 에러가 발생하는 것을 알 수 있다. 그러나 ptr1의 주소 값을 변경 할 수 있다. * num에 다이렉트로 접근하면.. 2019. 9. 5. [ C++ ] 인라인(inline) 함수 '인라인(inline) 함수'라는 이름의 의미부터 이해해보자. in은 내부를 의미하고, line은 '프로그램 코드라인'을 의미한다. 즉, "프로그램 코드라인 안으로 들어가 버린 함수"라는 뜻이 된다. 그럼 의문점이 들 수 있다. "매크로 함수랑 인라인 함수랑 뭐가 다르지?" 일단, 매크로 함수의 단점을 생각하면 다음과 같다. "정의하기가 어렵다. 복잡한 함수를 매크로의 형태로 정의하는데 한계가 있다." 그럼 지난번 복습을 위해 매크로 함수를 정의해보자. #include #define SQUARE(x) ((x)*(x)) using namespace std; int main(void) { cout 2019. 9. 5. 이전 1 ··· 10 11 12 13 14 다음