본문 바로가기
반응형

SWE/C++ OOP43

[C++] 동적 라이브러리에서 클래스 객체 생성하는 방법 | 런타임 링킹 | 팩토리함수 | 예제 코드 먼저 라이브러리 기초 개념에 대해 정리해보자 라이브러리 종류 1. 정적 라이브러리 (static library) .lib, .a 파일 2. 동적 라이브러리 (dynamic-link library) .dll, .so 파일 동적 라이브러리 사용 방법 1. 묵시적 링킹, 암시적 링킹(Implicit linking) 실행 파일 자체에 어떤 dll의 어떤 함수를 사용하겠다는 정보를 포함시키고, 운영체제가 프로그램 실행 시 해당 함수들을 초기화한 후 그것을 이용하는 방법 정적 라이브러의 함수 호출과 유사한 방법 Include header file 필요, 라이브러리 링킹 필요 #pragma comment(lib, "library명") 2. 명시적 링킹(Explicit linking) 프로그램이 실행 중일 때 API를.. 2023. 11. 2.
[C++] 멀티스레드에서 안전한 자원 관리 방법 | 병목현상 예방, mutex, lock_guard Thread-safety 변수 구현 방법 multi thread 환경에서 안전성을 갖춘 변수를 구현해보자 int val 변수를 thread-safey 하게 작성하고 싶으면, 보통 int val를 감싸는 커스텀 클래스를 구현하게 된다. 해당 클래스에서는 우리가 사용할 int val 변수를 가지고 있고, 해당 변수의 유일 사용을 보장해줄 mutex 변수도 추가한다. 코드는 아래와 같다. class MyClass { public: MyClass() : val(0), mtx_() {}; ~MyClass() {}; private: int val_; std::mutex mtx_; public: void SetVal(int val) { std::lock_guard lock(this->mtx_); this->val_ .. 2023. 5. 26.
[C++][효율화] 공백 클래스의 크기는? / EBO란? / 최적화 기법 / 바이트 패딩 공백 클래스의 사이즈? Class Empty() {} 예를 들어, 위와 같이 아무런 데이터가 없는 empty 클래스가 있다. 이 공백 클래스의 사이즈는 어떻게 될까? 정의된 데이터가 없으므로 객체는 메모리 사용을 하지 말아야한다고 생각할 수 있지만, 실제로 위 클래스의 사이즈는 1이 나온다. Std::cout 2023. 5. 23.
[C++] typedef와 using의 차이점 C++에서 typdef와 using 둘 다 별칭 생성 키워드이다. 그러면 차이점이 뭘까? 동일한 기능의 키워드가 왜 두 개 존재하게 되었을까? typdef typedef란? typdef는 C언어에서 사용되던 문법이다. 타입의 이름에 대한 별칭을 생성하는데 사용된다. 즉, struct나 class에 대해서만 사용 가능하다. Typedef 예제 코드 typedef double distance_t; class Circle { public: distance_t radius; }; // double 타입에 대한 별칭으로 distance_t를 생성하였다. using Using이란? C++11부터 추가된 문법. Typedef와 다르게 타입뿐만 아니라 변수, 함수, 템플릿 등 모두 별칭 생성이 가능하다. using 예.. 2023. 5. 7.
반응형