프로그래밍 공부

프로그래밍 700

카테고리 설명
  • 값에 의한 전달(Passing by Value) 동작방식 함수에 전달되는 변수의 값이 복사되어 매개변수에 전달된다. 함수 내에서 매개변수의 값을 변경해도 호출자의 변수에는 영향을 주지 않는다. void addTen(int num) { num += 10; } int main() { int value = 5; addTen(value); // value는 여전히 5이다. return 0; }

  • 메모리 릭 (memory leak) 프로그램이 동적으로 할당한 메모리를 해제 하지 않고, 그대로 방치하는 상황을 이야기 한다. C++에서 new[]로 할당한 배열 형태의 메모리와 이를 해제하는 delete[]가 정확하게 수행되지 않았을 때, 발생한다. 메모리 누수의 영향 자원소모 메모리 누수가 계속되면, 사용가능한 메모리양이 감소하여, 시스템에 부하를 줄 수 있다. 프로그램 종료까지 남아있는 메모리 프로그램이 종료되기 전 까지는 할당된 메모리는 계속 남아있게 되어 불필요한 자원낭비가 이루어진다. 방지법 정확한 해제 delete[]를 항상 할당과 반대순서로 정확한 위치에서 호출하여 메모리 해제를 해야한다. 스마트 포인터 사용 C++11부터 제공되는 스마트포인터인 std::unique_ptr 또는 std::..

  • 1.1.12 타입 추론 타입 추론(type Infernerce)는, 컴파일러가 표현식으로부터 타입을 자동적으로 연역해내도록 한다. 타입추론을 위해 두개의 키워드 auto와 decltype이 추가되었다. C++14부터는 decltype(auto)로 조합하여 사용할 수도 있다. auto 키워드 auto 키워드는 네 가지 전혀 다른 의미를 가지고 있다. 첫번쨰 사용 예는, 어떤 변수의 타입을 컴파일 타임에 자동적으로 연역해내는 것이다. auto x = 123; 위의 x는 자동적으로 int타입으로 변환된다. 그러나, int대신 auto를 타이핑 했을 뿐, 그다기 효용이 없다. 하지만, 복잡한 타입의 경우, 효과가 있다. 예를들어, 함수 getFoo() 의 리턴타입을 추론하기 힘들다고 가정하면, 리턴값을 변수에 ..

  • 1.1.11 함수 프로그램의 크기가 커지면, main() 함수에 모든 코드를 담을 수 없다. 프로그램을 이해하기 쉽게 하려면, 코드의 일부를 의미있는 단위로 쪼개어, 즉 분해(decompose)하여 함수로 만들어야 한다. 다른 코드에서 함수를 이용할 수 있게 하려면, 함수를 선언해야 한다. 함수가 특정 소스 파일 안에서만 사용된다면, 보통 그 파일 안에서 선언과 정의를 모두 하게 된다. 반면 다른 모듈의 소스파일을 이용한다면, 함수 선언은 헤더파일에 위치시키고, 함수정의는 소스 파일에 두게된다. void myFunction(int i, char c); 리턴타입이 void 임으로 호출자에 아무런 결과를 돌려주지 않는다. 함수 파라미터로 int와 char이 선언되어있기 때문에, 파라미터를 무조건 입력해야 선..

  • 1.1.10 루프(반복문) 컴퓨터는 태생적으로 같은 작업을 반복하는데 능하다. C++에서는 while루프, do/while루프, for루프, 구간지정for루프 등, 네가지 형태의 반복문을 지원한다. while루프 while루프는 주어진 표현식이 참인 동안 while블록의 코드가 실행되게 한다. 다음 코드는 this is silly 를 다섯번 출력하는 코드이다. int i = 0; while ( i < 5) { std::cout

  • 트랜스폼 = 객체의 PRS Position Rotation Scail 언리얼에서는 좌표계가 다르다. TRS로 곱한다. 사실 어떻게 곱하든 상관없음. 모빌리티 스태틱 = 객체가 움직이지 않도록 비허용 무버블 = 객체가 움직이도록 허용 언리얼 리플렉션 리플리케이션 언리얼 계층구조