본문 바로가기

lambda

shared_ptr에서 배열(array) delete[]로 해제하는 방법 shared_ptr은 C++에서 제공하는 스마트 포인터입니다.메모리의 관리가 까다로운 C++에서 유용하게 사용이 가능합니다.shared_ptr은 참조 카운트(Reference Count)를 통해서 메모리 해제 시점을 결정합니다.shared_ptr은 기본적으로 사용된 메모리를 delete로 해제하게 됩니다.배열(new [])이 저장되어 있을 경우에 배열의 해제를 할 수 있는 방법은 다음과 같습니다.1. delete[]를 호출하는 함수 객체를 생성초기화를 할 때 포인터와 함께 메모리를 해제할 때 사용할 함수를 전달하는 방법입니다.shared_ptr은 생성자에 메모리 해제를 위한 deleter를 전달할 수 있습니다.메모리 할당을 위한 함수를 전달하는 것도 가능합니다.함수 객체 혹은 함수를 전달해서 shared.. 더보기
[C++11] 이름 없는 함수, 람다(Lambda)(2) 이름 없는 함수, 람다(Lambda)(1) 링크는 다음과 같습니다.2014/12/11 - [Programming/C++11&14] - [C++11] 이름 없는 함수, 람다(Lambda)(1)람다에 대한 설명에 앞서서 람다의 구조에 대한 이미지를 다시 보도록 하겠습니다.1. 캡처(Capture)캡처는 해당 람다 구문을 포함하고 있는 Scope에 선언된 변수를 사용할 수 있게 해줍니다.캡처는 이미지에서 [=]로 표시된 부분입니다.기본적으로 []를 사용하면 Scope의 변수에 접근이 불가능하게 됩니다. #include using namespace std; void main() { int a = 0, b = 1; []() { // cout 더보기
[C++11] 이름 없는 함수, 람다(Lambda)(1) C++11에서 새롭게 추가된 문법은 람다입니다.람다는 그리스어 알파벳의 11번째 글자로 이런 모양으로 생겼습니다.이미 이전 C++11 포스팅([C++11] Range-Based For Loop)에서 람다를 사용한 for_each 구문을 사용한 적이 있었습니다.람다는 익명 함수(Anonymous Function)이라고도 부릅니다.함수의 몸체(Body)는 있지만 이름(Name)이 없기 때문입니다.람다는 STL의 함수 객체(Function Object 혹은, Functor)처럼 동작합니다.함수 객체처럼 암시적으로 함수 객체 클래스를 만들고, 함수 객체를 생성해서 전달합니다.혹시나 함수 객체를 모르시는 분은 STL을 공부하시는 것을 추천합니다. 람다는 함수 포인터와 함수 객체에 비해 다음과 같은 장점이 있습니다.. 더보기