본문 바로가기

C++

(2)
람다(lamda) 표현식을 이해해보자 람다?? 람다식은 흔히 이름없는 함수, 일회용 함수라고 부른다. 어째서 이런 식으로 부르는 걸까? 람다의 특징 람다의 가장 큰 특징은 함수명을 선언하고 사용하는 것이 아닌 식별자 없이 실행가능한 함수라는 것이다. 말 그대로 함수를 선언하지 않고 그냥 사용한다. 람다 표현식의 형태 람다식은 내용이 없으면 정말 기괴한 형태를 띄고있다. [ ] ( ) { } ( ) 각각 [캡처] (매개변수) { 함수 로직 } (호출) 이라는 뜻을 가지고 있다. 호출은 필수가 아니다! 예시 호출 O: [](int a, int b) { return a + b }(1,2) 호출 X: [](int a, int b) { return a + b } 이런식으로 사용한다. 캡처 영역 그럼 캡처 영역엔 도대체 어떤게 들어갈까? 캡처영역은 기..
스마트 포인터를 이해해보자 똑똑한 포인터 이름에서 알려주다시피 스마트포인터는 일반 포인터보다 똑똑하다. 스마트 포인터는 어떤 점을 개선하기 위해 나온 걸까? 메모리 오염 메모리오염은 할당되지 않는 메모리를 사용하는 것을 말한다. 주로 할당해제를 한 후에도 그 메모리를 가리키는 포인터를 사용할 때 일어난다. 이게 그렇게 심각한 건가?라고 생각이 들 수 있다. 오염시킨 그 공간이 비어있는 상태라면 괜찮지만, 만약 다른 객체들이 할당받았던 상태라면?? 갑자기 다른 객체의 값이 바뀔 수 있는 것이다. 이것을 방지하기 위해 똑똑한 스마트 포인터가 개발 됐다. 스마트 포인터의 구동 방식 스마트 포인터는 3가지가 존재한다. shared_pointer unique_pointer weak_pointer 각각 동작 방법은 모두 다르지만, 메모리 오..