C Programming Language에서 후반부에서는 Memory 관리 파트가 나옵니다. 이 부분에서, 원시형태의 Malloc을 볼 수가 있습니다. (현재는 이것보다 훨신 복잡할태지만요) 아래 코드를 보시죠. #include typedef long Align; union header{ //memory block struct { union header *ptr; //next memory block unsigned size; //current memory block's size } s; //Align을 위해서 존재하는 dummy Align x; }; typedef union header Header; malloc은 header라는 Union을 사용해서 free List를 관리합니다. header를 보면,..
1. Void포인터에 대해서 Void포인터는 한줄로 정리하면 "대상체가 정해져 있지 않은 포인터" 이다. 대상체가 정해져 있지않기 때문에 어떠한 Type의 변수도 포인팅 할 수 있다. 하지만 역참조로 포인팅 하는 값을 읽을려면, 대상체의 크기를 알지 못하기 때문에 문제가 된다. #include #include int main(){ int a = 5; void *temp; //정상적으로 void pointer에 다른 type의 변수를 할당할 수 있다. temp = &a; //하지만 역참조연산자로 void pointer가 가리키고 있는 //데이터를 읽을 경우 에러가 발생한다. //대상체의 정보가 없기 때문 printf("%d", *temp); /* error: 'void*' is not a pointer-t..
C Programming Language에서 메모리 할당 함수인 malloc을 설명하기 이전에, alloc이라는 함수를 확인할 수 있습니다. #define ALLOCSIZE 10000 static char allocbuf[ALLOCSIZE]; static char *allocp = allocbuf; char *alloc(int n) { if (allocbuf + ALLOCSIZE - allocp >= n) { allocp += n; return allocp - n; } else { return 0; } } 위 함수를 보면, allocbuf라는 array를 buffer로 설정하고, 이 buffer을 기준으로 할당을 조절하는것을 알 수가 있습니다. 문제는 if (allocbuf + ALLOCSIZE - al..
C언어의 바이블로 불리는 C Programming Language에서 보면, 초반에 아래와 같은 코드가 등장합니다. #include int main() { int c; while ((c=getchar()) != EOF){ putchar(c); } } 책을 읽기전까지, getchar는 단순하게 사용자의 Input을 받고, 이때 단어 하나만 받아올 수 있다 라고 알고있었습니다. 하지만, 위의 코드를 보면, 1. c를 int형으로 선언한다 2. getchar로 c에다가 input을 받는다 3. (나의 예상)c의 첫 글자가 EOF인지 확인한다. 4. 아니면 첫글자를 화면에 출력하고, 다시 Input을 받는다 였습니다. 하지만 위 코드를 실행해보면, 한 단어가 아니라 입력받은 모든 단어를 출력하는 것을 알 수 있..
- Total
- Today
- Yesterday
- Greedy알고리즘
- 이분탐색
- prime number
- 사칙연산
- 완전탐색 알고리즘
- Sort알고리즘
- Search알고리즘
- 병렬처리
- 분할정복
- heap
- 동적계획법
- 프로그래머스
- 알고리즘
- GDC
- C++
- stack
- AVX
- SIMD
- 컴퓨터그래픽스
- hash
- git
- 코딩테스트
- Python
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |