SW 그리고 아빠 엔지니어링 중...

아는 만큼 보이고, 경험해봐야 알 수 있고, 자꾸 써야 내 것이 된다.

전체 글 128

🚀성능 최적화 도구 - constexpr과 inline 함수 이해하기

🗨️ 프로그래밍에서 성능 최적화는 매우 중요한 주제이며 지금 얘기하는 내용들은 체감할 정도의 성능개선이 아니다. 하지만 constexpr과 inline 이 두 키워드의 의미와 사용법에 대해 알게 된다면 기계어 동작 간소화와 오버헤드를 절약하는 이점을 취하고, 기존 레거시 코드에 constexpr과 inline 도구를 잘 못 사용하여 성능을 저하시키고 있는 문제를 개선하게 될지도 모른다. 🤓 constexpr: 컴파일 시간의 마법📜 C++ core guidelines F.4: 함수가 컴파일 시간에 평가되어야 한다면 constexpr로 선언하라 constexpr란?📌 constexpr 발음을 어느 교수님께 배우느냐에 따라 조금씩 다르게 알던데 저는 뭐 '콘스트 익스퍼'라로 부르고 있다. constex..

L C++ 2025.03.21

🤔 스마트 포인터(unique_ptr, shared_ptr) 생성 시 make_shared(or make_unique)를 써야 하는 이유?

Q1. 스마트 포인터 unique_ptr, shared_ptr를 모른다.Q2. 스마트 포인터 unique_ptr, shared_ptr 생성 방법은?Q3. make_shared(or make_unique)를 써야 하는 이유는?* 3가지 질문에 대한 답을 알고 있다면 이 글을 읽지 않아도 된다. 😎🛫shared_ptr 생성 시에는 std::make_shared를 써라!C++에서 메모리 할당/해제는 의도치 않은 많은 이슈를 양산하기에 RAII(Resource acquisition is initialization)가 되는 걸 사용하라고 한다. 그중 하나인 shared_ptr에 대해 조금 알아보자. sample#include #include struct Point{ int x; int y; P..

L C++ 2025.03.14

이월엔 DevBloom 참석 후기 / K-DEVCON 서울

💬 행사는 2개 파트로 나눠서 관심 있는 주제를 시간에 맞춰 골라 들을 수 있었다. 우연히도 내게 관심 있는 주제가 한쪽으로 몰려있어 한자리에서 끝까지 들었다. (절대 귀찮아서 안 옮긴 게 아니다.) 이후 운영진 측에서 영상을 올릴 것 같은데 그 영상이 올라오기 전에 프리뷰 정도의 소개가 되었으면 하는 바람에서 (지극히 개인 관점이지만) 정리해 본다. Let's go~   13:20-14:00 (ROOM 1) Introduction to Rust Concurrency - 옥찬호 (42dot) 러린이(러스트 어린이)로서 러스트를 잘 모르지만, C++ 동시성 처리와는 어떤 차이점이 있는지에 대한 관점으로 흥미롭게 볼 수 있었다. 세부 소개 내용패닉 개념 설명channel 시스템(스레드 간 안전한 통신 보장..

회고 & 후기 2025.02.20

남들 쓰듯이 쓰는 virtual이라면 고민할 필요 없는 알쓸 virtual 정보 📖

virtual은 컴파일 타임과 실행 타임 동작이 다르다.가상함수는 기본 값 설정을 하지 말자. (제발 ㅜㅜ) 가상함수에 기본 값을 세팅하는 데 기저 클래스와 파생 클래스에서 기본 값이 다르면 어떻게 될까? 🤔아래 예시는 이를 확인해 볼 수 있는 코드인데 동작 결과를 예측해 보자.example#includeclass Base{public: virtual void foo(int a = 10) { std::cout foo(); //1.}resultDerived : 10 예상했던 결과 값인가?💬 그냥, '제발 가상함수는 기본 값을 설정하지 말자'로 끝내고 싶지만 발생할 수 있는 문제점은 이해하고 넘어가는 게 좋을 테니 정리를 해보자. 우선 가상함수 컴파일 과정은 다음과 같다.컴파일러는 컴파일 시점에 vtab..

L C++ 2024.10.06

직접선언! 낄낄빠빠하자.

💬 최신 소스로 당겨 빌드를 하는데 빌드에러가 났다.원인은 헤더파일에 다른 헤더파일을 직접 참조한 게 원인이었다.//A.h#include "B.h" // 직접참조로 인한 error에러는 누구나 발생시킬 수 있지만 직접참조와 전방선언 차이에 대해 제대로 이해를 못 하면 유사한 이슈가 재발하기에 이참에 정리해 본다. 직접참조? 와 전방선언우선 직접참조와 전방선언의 모양을 임의의 MyClass 클래스를 예로 확인해 보자.// MyClass.hclass MyClass {public: void someFunction(); int someVariable;}; 직접 선언(Direct declaration)의 예#include "MyClass.h" //직접선언int main() { MyClass ob..

L C++ 2024.09.09

trivial 뜻 : 하찮은, 그렇지만 하찮지 않은 trivial‼

trivial을 알아보기 이전에 한 번 생각해 보자. 💬 trivial을 왜 알아야 할까?🤔 내가 구현한 객체가 trivial 하지 않으면 복사 생성자나 복사 대입 연산자가 호출되어 복사가 된다. 너무 당연한 얘기이다.그런데 trivial 하면 컴파일러가 복사 생성자나 복사 대입 연산자를 호출하지 않고 메모리 블록을 통째로 복사를 한다.(bitwise copy) 다시 말해 코드가 최적화되어 복사 속도가 빨라지기도 하고 이를 고려하여 구현할 수도 있다.💬 trivial의 첫인상은 마치 내가 산 주식이 100원 올라 자랑하고 있는데, 친구가 훨씬 더 많이 올랐다는 소릴듣는 느낌이랄까? 다시 말해 이상하게 성능을 손해 본 느낌이 들게 하였었다.하찮은 녀석이, 하찮지 않기 때문에 알아볼 필요가 있다.🧐t..

L C++ 2024.08.25

컴파일러와 페어 프로그래밍 - 특별 멤버 함수 편 🚀

💬 최근 AI 페어 프로그래밍 교육을 들으며, AI에게 도움받는 영역이 훨씬 높은 수준까지 이르렀다는 생각이 들었다. 특별 멤버 함수(Special Member Function)는 컴파일러가 사용자 코드 작성에 따라 생성 유무가 달라지기에 컴파일러와 페어프로그래밍이란 제목을 써봤는데, 아무튼 본 글에서는 컴파일러가 바라보는 특별 멤버 함수 생성 규칙에 대해 알아보자. 누가 특별 멤버 함수(Special Member Function) 인가? 우선 예제 코드를 통해 어떤 게 특별 멤버 함수 인지를 확인해 보자. Examplestruct Object{ std::string name; int data; Object() {}; //1. ~Object() {}; //2. Object(const ..

L C++ 2024.08.15

'0' 대신 'nullptr'를 써야 하는 이유

💬 C++ Core Guidelines에서는 '0' 혹은 'NULL'보다는 'nullptr'를 사용하라고 권장하고 있는데, 권장하기에 사용하기보다는 왜 nullptr를 쓰는 게 나은지 다양한 방법으로 알아보자.nullptr를 써야 하는 이유널포인터 대신 0을 사용하면서 오류가 발생한다.사례 1Exampleint main() { int* p1 = 0; int* p2 = nullptr;} 위 코드는 문제없이 p1, p2에 널 포인트가 대입이 된다. 다음 예제도 문제가 없는지 검토해 보자.Example void foo(int* p) {} int main(){ int n = 0; foo(0); //1 ?? foo(n); //2 ??} 주석의 결과를 확인해 보면 다음과 같다.주석 1 : ..

L C++ 2024.08.04

new/delete 동작 원리 이해하기

💬 C++ core guidelines에 따르면 메모리 관리는 RAII가 되는 smart pointer를 권장하고 있다.하지만 이미 레거시 코드에 녹여져 있는 new/delete는 어떻게 해야 하나?🤔 또 malloc/free는?😨C++에서 malloc/free를 못 본 것 같긴 하지만 간단히 new/delete와의 차이점을 정리하고 new/delete를 좀 더 쪼개서 동작시키는 내용을 정리해 본다. 🚀 우선 new/delete 동작 원리를 알아보자.Examplenew/delete를 사용한 프로그램 코드이다.class Point{ int x, y;public: Point(int a, int b) { std::cout ResultPoint()~Point() 주석 1, 2의 동작 원리를 정..

L C++ 2024.07.22

C++ Korea 2024년 6월 Meet-Up & Hands-On + 발표 후기

지난 24/06/29 설렜던 C++ korea 6월 Meet-up 참석 및 발표 후기를 정리해보고자 한다. 참가신청지난 C++세미나는 너무 멀어서 못 갔고 이번에는 참석해 봐야겠단 생각과 '하는 김에 발표도 해볼까?'란 마음으로 신청했다. (이때만 해도 큰 고민을 하지 않았다.)💡 C++ Korea에서는 3개월마다 Meet-up을 실시하고 있고, 지난 3월 부산에 이어 이번 6월에는 서울에서 실시하였다. - 기존에 실시했던 일정 참고 (https://festa.io/hosts/40) 오 마이갓!😨 신청하고 일주일이 지났는데 아무 답변이 없어, 발표를 안 하나보다 하고 있었는데,  덜컥 발표자로 선정된 것이다. 태어나서 단 한 번도 손들고 발표해 본 적 없는 내가, 누구 앞에서 발표라니... 선정의 기..

회고 & 후기 2024.07.04
320x100