-
static 변수Coding/Tip !! 2018. 9. 18. 02:34
보통 초기화를 한 변수는 Data 영역에 메모리가 할당되며, 초기화를 하지 않은 변수들의 경우 BSS 영역에 할당된다. 하지만 Static 변수는 초기화를 하지 않은 상태에서 해당 변수를 사용하지 않을 경우 메모리 자체가 할당되지 않는다 그에 반해 전역변수는 초기화를 하지 않더라도 무조건 메모리에 올라간다. Static 객체의 경우 처음 구문이 수행되는 시점에 처음 생성자를 호출하도록 할 수 있으며 이를 함수화해서 호출하면 생성자의 호출 시점을 조정하는게 가능해진다. 다른점은 초기화를 한 번만 한다는 점 (프로그램이 종료될 때까지 메모리공간에 존재한다)과 지역변수와 달리 해당 함수가 반환되어도 소멸되지 않는다. Static 변수는 지역변수와 전역변수의 성질을 둘 다 가진다고 할 수 있다.
-
const 참조자Coding/Tip !! 2018. 9. 17. 18:53
& 연산자는 변수의 주소값을 반환한다우리가 pointer를 공부할 때 한번쯤은 보게되는 &이다.&는 참조자선언을 의미한다. 변수의 주소값을 반환하려면 할당된 메모리 공간이 필요하고 그렇기 때문에 이는 상수가 아닌 변수에 사용된다.12345678#include int main(){ int num = 7; int *pointer = # int &refer = num; return 0;} int &refer = 7; -> 참조자는 이미 선언된 할당된 메모리를 가진 변수를 대상으로 사용이 가능함, 변수가 아닌 상수를 참조했음으로 잘못됨int &refer; -> 아무것도 참조하는 대상이 없음int &refer = NULL; -> NULL을 참조함으로 에러임 하지만 예외의 경우가 있다. const 참조자는 ..
-
댕글링 포인터 ( Dangling Pointer)Coding/Tip !! 2018. 9. 17. 18:28
댕글링 포인터란.. 해제된 메모리 영역을 가리키고 있는 포인터를 의미다. 이러한 댕글링 포인터가 가리키고 있는 메모리는 더이상 유효하지 않음으로 Premature free란 의미인 너무 급한 해제 또는 조숙한 해제라고 하기도 한다.메모리 해제 한 뒤에 해제된 메모리에 접근하거나 함수 호출에서 자동변수를 가리키는 포인터를 반환하기에 아래의 결과가 나타나게 된다. 12345678910111213#include int main(){ bool a = true; int *point; if(a){ int dang=5; point = &dang; } //point는 댕글링 포인터가 된다. 이유는 괄호안의 dang이 괄호를 벗어나면서 지역변수임으로 //할당된 스택영역이 제거되기 때문이다. return 0;} 댕글링 포..
-
클럭ETC 2018. 9. 14. 03:57
클럭이란!? 메인보드나 그래픽 카드, 메인보드, CPU, 메모리 등의 오직 전기가 통하는 디지털 장치에 존재하는전기적 신호를 의미하며 On/Off형태를 반복한 전류의 흐름을 이용하여 PC를 구성하는부품을 작동시키는 신호를 말함 이런 전류 흐름을 클럭 주파수 Clock Frequench 또는 클럭 Clock이라고 한다. 주파수로 표현되는 클럭은 위아래로 변하게 되는 진폭을 가진 진동이 연속적으로 발생하는데 이러한 진폭을 이용하여 PC는 0 또는 1을 나타내는 비트 단위의 신호를 각각의 장치로 전송한다. 하나의 클럭 주기가 지나게 되면 반드시 1개의 비트가 옮겨지며 1초에 1번 위아래로 진폭이 변하는 동안에0이나 1이라는 신호가 다른 장치로 옮겨진다. 클럭의 단위는 Hz(MHz, GHz)이며 클럭 속도를 나..
-
strcmp와 strncmpCoding/Tip !! 2018. 8. 20. 12:39
strcmp 와 strncmp 를 사용하는 방법이 아닌 왜 사용하는가에 대한 포스팅이다. C언어에서의 기본 형식은 비교 연산으로 값의 크기를 비교한다. 하지만 배열은 메모리 주소를 값으로 가지기 때문에 비교연산시에 메모리 주소를 비교하게 된다. 그러므로 원치 않는 결과가 발생하게 된다. 예를 들어 보겠다. char example1[10] = "hi hi"char example2[10] = "hi hi" if(example1 == example2){cout
-
10진수의 표현ETC/자료구조 2018. 8. 20. 12:32
10진수의 표현의 경우 2가지가 존재한다. 존(Zone) 형식과 팩(Pack)형식이다. * 존 형식10진수 한자리를 표현하는데 있어서 우리는 1바이트(8비트)를 이용하는데그 중에 반인 4비트는 존 영역으로 나머지 4비트는 수치 영역으로 사용되며존 영역은 항상 '1 1 1 1' 로 표시한다. 수치 영역에는 표현할 10진수의 한 자리의 값에 대한 2진수 값이 표현된다.4비트로는 당연히 0~15까지의 수를 표현 할 수 있으며 10~15는 A~F를 이용하여 한 자리 수로 표현하게된다. 존 영역은 여러자리의 10진수릂 표현할 경우 10진수의 자릿수 만큼 존 형식을 연결하여 사용하고부호는 최하위 바이트의 존 영역에 나타내게 된다. 다음은 이해를 돕기위한 존 영역의 예시이다.색깔 하나마다 한바이트를 의미한다. 상위비..
-
2진수의 정수 표현 방식(부호절대값, 1의보수, 2의보수)ETC/자료구조 2018. 8. 20. 12:18
보수란 쉽게 말해 보충해주는 수라고 생각하면 편하다 예를들어 3에 대한 10의 보수는 7이고 5에대한 16의 보수는 11이된다. 2진수의 정수 표현은 총 3가지다~ * 부호절대값의 표현너무쉽다~ 최상위 비트 MSB(Most Siginificant Bit)에 부호를 표시하고 나머지 비트에 표현할 2진수의 값을 넣어주면 끝난다.ex)0 0 0 1 0 1 0 1 = 211 0 0 1 0 1 0 1 = -21 * 1의 보수굉장히 간단하다양수는 위의 부호절대값처럼 표현하면 된다.보수를 취하고싶은 수를 모든비트가 1인 수에서 빼면된다. 2진수를 1의보스형식으로 변환하여 표현하면 된다.1바이트를 이용해서 2진수를 표현하는 경우 1의 보수를 만드는 방법은 다음과 같다. -21을 1의 보수 형식을 취한다고 하면 1 1 ..