코딩

이전 포스팅에서 OOP란 무엇인지, 왜 사용해야 하는지, 그리고 OOP의 핵심개념 4가지에는 무엇이 있는지 알아 보았고, 캡슐화란 무엇인지 알아 보았다. https://nybot-house.tistory.com/104 [C# Basics] 객체지향 OOP란 무엇인가? - 핵심 4개념과 개론 이전 포스팅에서 한번 다루었던 OOP에 대해 다시 한번 그 중요성을 느꼈기에 한번 더 다뤄 보고자 한다. 이전 글: https://nybot-house.tistory.com/53 1. OOP 란? - 객체 지향 프로그래밍 소개 C++의 OOP란, 객체 nybot-house.tistory.com 이번 포스팅에서는 OOP(Object Oriented Programming)의 핵심 개념 중 하나인 다형성에 대해서 알아 보자..
이전 포스팅에서 OOP란 무엇인지, 왜 사용해야 하는지, 그리고 OOP의 핵심개념들에는 무엇이 있는지 알아 보았다. https://nybot-house.tistory.com/104 [C# Basics] 객체지향 OOP란 무엇인가? - 핵심 4개념과 개론 이전 포스팅에서 한번 다루었던 OOP에 대해 다시 한번 그 중요성을 느꼈기에 한번 더 다뤄 보고자 한다. 이전 글: https://nybot-house.tistory.com/53 1. OOP 란? - 객체 지향 프로그래밍 소개 C++의 OOP란, 객체 nybot-house.tistory.com 이번 포스팅에서는 OOP(Object Oriented Programming)의 핵심 개념 중 하나인 캡슐화와 은닉성에 대해 자세히 알아 보자. 캡슐화(은닉성)란? ..
https://nybot-house.tistory.com/92#comment15051682 함수/메서드 컴퓨터 과학에서 함수란? 함수(function), 서브루틴(subroutine), 루틴(routine), 메서드(method), 프로시저(procedure)는 소프트웨어에서 특정 동작을 수행하는 일정 코드 부분이다. 즉, '특정한 작업을 위해 nybot-house.tistory.com 위 게시글에서 ref 와 out을 잠시 언급했었다. 메서드에서 ref 와 out 키워드를 사용하면 pass by value가 아니라 pass by reference가 된다. 이는 메서드가 전달된 매개변수 값을 수정할 수 있다는 의미이다. (잘 모르겠다면 https://nybot-house.tistory.com/49). 1..
RVO 가 일어나게 되면, 앞서 배웠던 소유권의 이전(move)이 발생할 필요 없이 0 copy 를 달성해 낼 수 있다. 함수의 return 값을 value로 하게 되면(return by value) RVO가 개입되며 가장 효율적인 할당을 해낼 수 있다는 것이다. 다음의 코드를 보면, 프로세스는 이렇게 진행될 것이라 생각하기 쉽다. 심지어 이럴 때 std:move() 를 사용해서 copy를 없애주고자 하는 사람도 있다. 하지만, 실제로는 RVO가 개입된다. : 실제로 컴파일러는 Return Value Address가 a를 가리키고 있다는 것을 알고 있다. 따라서 결국 함수공간 안에 힙 공간에 문자열을 만들고 a가 직접 이 공간을 가리키도록 만들어 놓는다. 함수가 끝나고 해제되며 우측 그림처럼 된다. RV..
필요 사전 지식 메모리 동적 확보, 배열의 동적인 확보 메모리 동적 확보, 배열의 동적인 확보 참고 nybot-house.tistory.com/9 변수와 스코프(지역변수와 전역변수) 02.14" data-og-description="변수의 종류 파악하기 지금까지 변수와 배열을 사용했던 곳은 main() 함수 안이거나 직접 만든 함수 안이었다.. nybot-house.tistory.com C++ 는 사용자가 메모리 관리를 직접 해 주어야 하는 Unmanaged Language이다. 메모리 관리에 실패하게 되면 Memory leak, Memory fragmentation 등의 문제가 일어날 수 있다. 힙 메모리를 정확하게 이해한다면 이런 문제들을 피해 프로그래밍을 할 수 있다. Stack VS Heap 비교..
스택 메모리는 흔히 생각하듯이 변수a 변수b 이런 식으로 쌓여가면서 동작하지 않는다. 실제로 스택 메모리는 변수별로 쌓여가는 것이 아니라 Stack Frame 단위로 메모리를 쌓아가면서 동작한다. 이 Stack Frame은 Function 단위로 나누어지고 호출된다. Call Stack foo() 함수 내에서 a b 둘 중 누가 위에 위치할지는 컴파일러가 정해준다. bar() 함수 내에서도 마찬가지. main()함수 내에서도 마찬가지다. (1) 함수가 실행되면 main 함수가 가장 먼저 실행되면서 쌓여진다. (2) foo() 함수를 call 하면서 그 foo()의 stack frame을 그대로 가져와서 위에 쌓는다. (3) foo() 함수가 끝나고 bar() 함수를 호출되면, foo() 부분 메모리를 없..
sizeof() : 변수의 사이즈를 알아내는 방법 예제) 1 byte = 8 bit. 컴퓨터는 0과 1로 동작하는데, 그 단위가 1bit. 8bit는 이런 0과 1로 동작하는 칸이 8개 있다는 의미. int 타입은 4byte 를 가지고 있다. a 변수를 할당하는 순간 4byte의 공간을 차지한다는 의미. 정수 short int long = 2 4 8 byte 양수정수에는 unsigned를 붙여주면 됨. 실수 float double = 4 8 byte cppreference에서 각 변수 타입의 크기를 체크해보면 이렇다. https://en.cppreference.com/w/cpp/language/types Fundamental types - cppreference.com (See also type for ..
Stack Variables 스택 변수 : 변수가 많아질수록 메모리 공간이 위로 쌓여간다고 하여 stack. 컴퓨터가 변수를 인식/접근하는 방법 : 메모리 맵에서 가장 위에서부터 몇 번째에 위치하고 있는지로 구분한다. 변수의 이름을 기억하지 않는다. 예제) 이 때, 우리가 생각하는 추상적인 메모리 구조는 이런 느낌이다. 하지만, 실제 작동하는 stack 메모리 구조를 추상적으로 표현해 보면 이런 식이다. 각 변수의 주소를 출력해서 실제로 그런지 확인해 보자. Stack 메모리의 주소가 큰 수(a)에서 작은 쪽으로(d) 쌓여 나간다는 것을 실제로 확인해 볼 수 있다. 즉 이런 식이다! 더 로우 레벨로 내려가면 실제 메모리 구조는 격자 무늬로 되어 있다. 그렇다면 이런 모양으로 구성되었을 것이다. 주의점! ..
HeadlessCreator
'코딩' 태그의 글 목록