프로그래밍206 [C++] 메모리 관리 (1) - 동적 메모리, 배열과 포인터 References Professional C++ https://en.cppreference.com/w/ Contents 동적 메모리(Dynamic Memory) 다루기 배열과 포인터 비교 low-level 메모리 연산 C++은 C와 마찬가지로 최대한의 자유를 보장하며, 우리가 무엇을 하고 있는지 잘 알고 있다고 가정합니다. C++ 언어 자체는 매우 유연하며, 안전성이 떨어지는 것을 감수하면서 성능을 추구하기 때문에 심각한 문제가 발생할 가능성이 있는 작업을 할 수도 있습니다. 메모리 할당(allocation)과 관리(management)는 C++ 프로그래밍에서도 특히 문제가 발생하기 쉬운 부분입니다. 그래서 높은 수준의 프로그램을 작성하려면 메모리 관리의 내부 작동 방식을 확실히 이해하고 있어야 하는데.. 2022. 2. 7. [C++] string과 string_view References Professional C++ https://en.cppreference.com/w/ Contents C-Style Strings String Literals Raw String Literals C++ std::string 클래스 std::string_view 클래스 Nonstandard Strings C 언어에서는 단순히 널(NULL)로 끝나는 문자 배열로 스트링을 표현했습니다. 하지만 이렇게 하면 버퍼 오버플로우(buffer overflow)를 비롯한 다양한 문제들 때문에 보안 취약점이 드러날 수 있습니다. C++ 표준 라이브러리에서는 이러한 문제를 방지하기 위해 보다 안전하고 사용하기 쉬운 std::string 클래스를 제공합니다. 이번 포스팅에서는 C++에서 제공하는 strin.. 2022. 2. 6. C++ 라이브러리 개요 References The C++ Standard Library: Second Edition includes C++17 https://en.cppreference.com/w/ Contents C++ History C++ 라이브러리 개요 C++ History C++과 표준 라이브러리의 역사는 오래되었습니다. C++은 1980년대에 등장해서 2017년 버전, 현재는 2020년 버전까지 이어져오고 있습니다. 지난 30~40년간 C++이 얼마나 달라졌는지는 C++ 표준 라이브러리만 봐도 알 수 있는데, C++은 객체지향 언어(object-oriented language)로 시작했다가, STL을 이용한 제너릭 프로그래밍 개념이 추가되고 최근에는 함수형 프로그래밍 개념도 상당히 반영되고 있습니다. C++의 발전 과.. 2022. 2. 6. [Swift] Protocols (2) References https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Contents Adding Protocol Conformance with an Extension Adopting a Protocol Using a Synthesized Implementation Collections of Protocol Types Protocol Inheritance Class-Only Protocols Protocol Composition Checking for Protocol Conformance Optional Protocol Requirements Protocol Extensions 이전 포스팅에 이어서 계속해서 프로토콜에 대해 알아보도록 하겠습니.. 2022. 2. 5. [Swift] Protocols (1) References https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Contents Protocol Syntax Property Requirements Method Requirements Mutating Method Requirements Initializer Requirements Protocols as Types Delegation Protocols 프로토콜(protocol)은 메소드(methods)와 속성(properties), 그리고 특정 태스크나 일부 기능에 적합한 다른 요구사항들의 청사진(blueprint)를 정의합니다. 프로토콜은 요구사항들이 실제로 구현되는 클래스, 구조체, 또는 열거형에서 채택될 수 있습니다. 프로토콜의 요구.. 2022. 2. 5. [Swift] Extensions Refences https://docs.swift.org/swift-book/LanguageGuide/Extensions.html Contents Extension Syntax Computed Properties Initializers Methods Subscripts Nested Types Extensions 익스텐션(extension)을 사용하면 이미 정의된 클래스(class), 구조체(structure), 열거형(enumeration), 또는 프로토콜(protocol) 타입에 새로운 기능을 추가할 수 있습니다. 이는 원본 코드를 건들이지 않고 타입을 확장할 수 있는 기능이며, retroactive modeling이라고 합니다. (익스텐션은 Objective-C의 카테고리와 유사하다고 합니다.) 익스.. 2022. 2. 3. [Swift] Type Casting References https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html Contents Defining a Class Hierarchy for Type Casting Checking Type Downcasting Type Casting for Any and Any Object Type casting(타입 캐스팅)은 인스턴스의 타입을 체크하거나 해당 인스턴스를 인스턴스 자신의 클래스 계층에서 다른 수퍼클래스 또는 서브클래스로 처리하는 방법입니다. Swift에서 타입 캐스팅은 is와 as 오퍼레이터로 구현됩니다. 이 두 오퍼레이터는 값의 타입을 체크하거나 다른 타입으로 그 값을 캐스팅하는 간단하게 효과적인 방법을 제공합니다. Defining a.. 2022. 1. 29. [Swift] Optional Chaining References https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html Contents Optional Chaining as an Atlternative to Forced Unwrapping Defining Model Classes for Optional Chaining Accessing Properties Through Optional Chaining Linking Multiple Levels of Chaining Chaining on Methods with Optional Return Values Optional Chaning은 현재 'nil'일 수도 있는 optional properties/methods/subscripts를 .. 2022. 1. 8. [Swift] Deinitialization References https://docs.swift.org/swift-book/LanguageGuide/Deinitialization.html Contents How Deinitialization Works Deinitializers in Action deinitializer는 클래스 인스턴스가 해제될 때 즉시 호출됩니다. deinitializer는 deinit 키워드를 사용하여 작성할 수 있으며, init 키워드를 사용하여 initializer를 작성하는 방법과 유사합니다. Deinitializer는 오직 class 타입에서만 사용할 수 있습니다. How Deinitialization Works Swift는 인스턴스가 더 이상 필요없을 때, 자동으로 인스턴스를 할당 해제하여 리소스를 해제합니다. Sw.. 2022. 1. 6. [Swift] Initialization References https://docs.swift.org/swift-book/LanguageGuide/Initialization.html Contents Setting Initial Values for Stored Properties Customizing Initialization Default Initializers Initializer Delegation for Value Types Class Inheritance and Initialization Failable Initializers Required Initializers Setting a Default Property Value with a Closure or Function Initialization(초기화)는 클래스, 구조체, 열거형의 인.. 2022. 1. 3. 이전 1 ··· 11 12 13 14 15 16 17 ··· 21 다음