SMALL

Language 14

[C++] 스마트 포인터

스마트 포인터에 대한 정리RAII(Resource acquisition is initialization) 패턴객체가 쓰이는 Scope를 벗어나면 Resource를 해제해주는 기법bool error() {    return true;}void fnc() {    int* c = new int[100];    if (error()) return;    delete[] c;}int main(void) {    fnc();    _CrtDumpMemoryLeaks();        return 0;}Detected memory leaks! Dumping objects -> {156} normal block at 0x00C60C58, 400 bytes long. Data: CD CD CD CD CD CD CD ..

Language/C++ 2023.09.25

[C++] OOP 특징

OOP 특징 및 핵심 개념에 대한 정리OOP(Object Oriented Programming)객체지향 프로그래밍필요한 데이터를 추상화하여 속성과 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 캡슐화(Encapsulation)객체의 속성과 행위를 하나로 묶고 구현 코드를 외부에 감춰 은닉하는 것데이터 번들링(Data bundling) - 변수와 함수를 하나의 단위로 묶는 것멤버 변수 + 멤버 함수 + 접근지정자를 =  클래스로 캡슐화 지원정보 은닉(Information hiding) - 클래스 내부 구현을 외부로 드러나지 않도록 감춤추상화(Abstraction)중요하고 필요한 정보만 표현하기 위해 객체의 공통적 속성과 행위를 하나로 묶는 것 상속(In..

Language/C++ 2023.09.18

[C++] 클래스(Class)

C언어에서의 구조체사용자가 여러 데이터(멤버 변수)를 가지고 새롭게 정의할 수 있는 사용자 정의 타입 struct Person { char* name; int age;}; void PrintPerson(struct Person p) { printf(“%s, %d\n”, p.name, p.age);}void main() { struct Person jane, john; jane.name = “Jane Smith”; jane.age = 20; PrintPerson(jane); john.name = “John Smith”; john.age = 15; PrintPerson(john);} C++에서의 클래스사용자가 여러 데이터(멤버 변수), 데이터를 조작하는 방법(멤버 함수, 매소드..

Language/C++ 2023.09.17

[C++] 띄어쓰기 포함 문자열 입력

C++로 띄어쓰기(공백)를 포함해서 문자열 입력 받는 방법 정리cincin을 사용하여 아래와 같이 코드 작성 시 띄어쓰기 전 까지만 저장됨string s;cout > s;cout 띄어쓰기 포함 입력 방법1. getline 함수 사용string 헤더에 정의 되어있는 함수#include int main(void) { string s; cout  2. cin.getline 사용instream에 정의 되어있는 함수로, char* 를 입력받고, 마지막 매개변수로 구분자 지정 가능#include int main(void) { char s[100]; cout

Language/C++ 2023.09.12

[C] Compile/Build 과정

C로 작성한 소스코드 컴파일/빌드 과정에 대한 정리컴파일(Compile)인간이 이해할 수 있는 언어로 작성된 고수준 언어로 작성된  소스코드를 CPU가 읽을 수 있는 저수준의 언어로 변환하는 작업빌드(Build)소스코드를 기계어로 변환하여 컴퓨터가 이해할 수 있는 실행파일로 만드는 과정 빌드 과정전처리기(Preprocessor)헤더파일, 메크로와 같이 전처리기 구문을 처리.i 파일 생성컴파일러(Compiler)c 코드를 어셈블리어로 변환.s 파일 생성어셈블러(Assembler)어셈블리어를 기계어로 변환.o 파일 생성링커(Linker)여러가지 object 파일들을 연결하고, 다른 라이브러리(.a)가 있을 경우 연결시켜줌.exe 파일 생성

Language/C 2023.09.07

[C] 공용체(union) 사용법 및 예제

공용체(union)에 대한 정리(+예제)공용체(union)같은 메모리 주소 안에서 여러 형식을 가질 수 있는 값한 번에 한 가지의 데이터 형만 보관할 수 있는 구조체모든 멤버 변수가 같은 메모리를 공유하므로, 공용체는 한 번에 하나의 멤버 변수만 사용공용체 정의union Person { char* name; int age; double weight;};각 자료형 중 가장 큰 자료형의 크기만큼 공간을 할당받아 공용으로 사용char*는 4byte(32bit 기준), int는 4byte, double은 8byte이기 때문에 가장 큰 크기인 8byte를 할당받음 공용체 선언 및 예제int main(void) { union Person student = { "0so0" }; printf("크기 : %d\n", s..

Language/C 2023.08.28

[C] 자료구조 스택(stack)

자료구조 중 하나인 스택(stack)에 대한 설명 + c로 구현한 스택 코드에 대한 정리 ■ 스택(stack) 데이터를 아래에서부터 위로 쌓아 올리는 자료구조 후입 선출(LIFO :Last-In First Out) 객체 : n개의 요소들의 순서 있는 모임 연산 : Create ::= 스택 생성 Empty(s) ::= 비어 있는지 검사 Full(s) ::= 가득 차 있는지 검사 Push(s,e) ::= 맨 위에 요소 e 추가 Pop(s) ::= 맨 위의 요소 삭제 ■ 삽입, 삭제 연산 ■ 배열로 구현한 큐 구조체 선언 및 초기화 typedef int element; #define MAX_STACK_SIZE100 typedef struct _arraystack { element Stack[MAX_STACK_..

Language/C 2023.08.16

[C++] STL String 사용법 및 예제

C++ STL중 하나인 String 사용법에 대한 정리(+예제) String C++ 표준 라이브러리(Standard Template Library)로 string(문자열)을 다루는 클래스 C언어의 char*, char[] 처럼 문자열 끝에 '\0' 이 없음 문자열 길이 동적으로 변경 가능 String 선언 #include string s; // 빈 문자열 s 생성 string s = "hello"; // hello로 초기화된 s 생성 String 멤버함수 원소 접근 s[i]; // s의 i번째 원소 참조 s.at[i]; // s의 i번째 원소 참조 (유효 범휘 체크 O) s.front(); // s의 첫번째 원소 참조 s.back(); // s의 마지막 원소 참조 삽입/삭제 string s // s.pu..

Language/C++ 2023.08.15

[C] 자료구조 큐(queue)

자료구조 중 하나인 큐(queue), 덱(Deque)에 대한 설명 + c로 구현한 큐 코드에 대한 정리 ■ 큐(queue) 먼저 들어온 데이터가 먼저 나가는 자료구조 선입 선출(FIFO :First-In First Out) 객체 : n개의 요소들의 순서 있는 모임 연산 : Create ::= 큐 생성 Empty(q) ::= 비어 있는지 검사 Full(q) ::= 가득 차 있는지 검사 Enqueue(q, e) ::= 큐의 뒤에 요소 e 추가 Dequeue(q) ::= 큐의 앞에 있는 요소 반환 후 삭제 Peek(q) ::= 큐에서 삭제하지 않고 앞에 있는 요소 반환 ■ 삽입, 삭제 연산 ■ 배열로 구현한 큐 선형 큐 위와 같이 선형 큐로 구현할 경우, 삽입을 하기 위해서 요소들을 계속 이동시켜야 하는 문제..

Language/C 2023.08.09

[C#] .NET 기반 프로그램 디컴파일

.NET 기반으로 작성된 프로그램을 디컴파일 하는 방법에 대한 정리.NET모든 운영 체제에서 기본적으로 실행할 수 있는 데스크톱, 웹 및 모바일 애플리케이션 빌드를 위한 오픈 소스 플랫폼Linux, macOS, Windows, iOS, Android 등의 다양한 운영 체제에서 .NET 코드 실행 가능C#, F#, Visual Basic, CLI 지원 CLR(Common Language Runtime)서로 다른 운영 체제에서 .NET 프로그램을 컴파일하고 실행함런타임에 특정 아키텍처에서 실행할 수 있는 기계어 코드로 번역함 .NET 환경에서의 컴파일 과정1. 소스 컴파일 후 소스 코드는 중간언어 CIL(Common Intermediate Language)로 작성된 파일 생성2. CLR이 런타임에 JIT(J..

Language/C# 2023.08.07
LIST