LWN Weekly Report: 2026년 10월 8일 주요 뉴스
이번 주 LWN.net 위클리 에디션(10월 8일자) 주요 내용이다. Kernel Recipes 2026에서 Greg Kroah-Hartman은 LLM이 쏟아내는 보안 버그 리포트에 커널이 어떻게 대응하고 있는지를 "당황하지 말라(don't panic)"는 메시지와 함께 풀었고, 같은 행사에서…
이번 주 LWN.net 위클리 에디션(10월 8일자) 주요 내용이다. Kernel Recipes 2026에서 Greg Kroah-Hartman은 LLM이 쏟아내는 보안 버그 리포트에 커널이 어떻게 대응하고 있는지를 "당황하지 말라(don't panic)"는 메시지와 함께 풀었고, 같은 행사에서…
qsort, signal, pthread_create처럼 C 라이브러리는 동작을 바꿀 때 함수의 주소를 받는다. C++에서도 C 라이브러리와 연동하거나, 명령 이름과 처리 함수를 표로 묶거나, 플러그인 진입점을 받을 때 함수 포인터(function pointer)를 그대로 쓴다.…
복사 생성자를 따로 쓰지 않아도 Buffer b = a;는 컴파일된다. 컴파일러가 멤버를 하나씩 복사하는 기본 복사 생성자를 만들어주기 때문이다. 멤버가 값 타입이면 이것으로 충분하지만, 생 포인터로 자원을 소유하고 있으면 포인터…
함수 인자를 const T&로 받도록 바꿨더니 그 안에서 부르던 getter가 전부 컴파일 에러를 낸다. getter에 const를 붙이지 않았기 때문이다. 멤버 함수 뒤의 const는 "이 함수는 객체 상태를 바꾸지 않는다"는 약속이다.…
생성자는 객체를 사용 가능한 상태로 만드는 함수인데, 본문 {}이 실행되기 전에 이미 많은 일이 끝나 있다. 기반 클래스와 멤버는 정해진 순서로 먼저 생성되고, 초기화 리스트에 쓴 순서는 그 순서를 바꾸지…
C 스타일 캐스트 (T)x는 무엇이든 통과시킨다. const를 떼는 것도, 전혀 관계없는 타입의 포인터로 바꾸는 것도 경고 없이 한 줄에 끝난다. 다중 상속이나 불완전 타입이 섞이면 같은 문법이 상황에 따라 다른…
const char* p = make_path().c_str(); 한 줄은 컴파일러 경고 없이 통과하고, 대개 출력도 멀쩡하게 나온다. 하지만 p가 가리키는 메모리는 이미 해제된 상태다. make_path()가 반환한 std::string은 이름 없는 임시 객체(temporary object)이고,…
std::sort에 비교 함수를 넘기는 방법은 여러 가지다. 함수 포인터, operator()를 가진 클래스, 람다(lambda), std::function 중 무엇을 넘기든 결과는 같다. 그런데 천만 개를 정렬해 보면 실행 시간은 2배 가까이 벌어진다. 차이는…
작은 함수를 헤더에 정의했더니 multiple definition 링크 에러가 나고, 앞에 inline을 붙이자 사라진다. 많은 교재는 inline을 "호출 대신 본문을 끼워 넣으라는 요청"으로 설명하지만, 현대 컴파일러에서 실제로 인라인 확장(inline expansion)을 할지는…
지난 글에서 본 오버로딩으로 max를 만들면 int, double, std::string마다 본문이 똑같은 함수를 하나씩 복사해야 한다. 함수 템플릿(function template)은 타입을 매개변수로 받아 이 복사를 컴파일러에게 맡긴다. 대신 템플릿 인수 추론(template argument…