출처
- 정글 사관학교
- C Input and Output (Geeks for Geeks)
- C Functions (Geeks for Geeks)
- C Data Types (Geeks for Geeks)
- C Pointer Basics (Geeks for Geeks)
- C Dynamic Memory Allocation (Geeks for Geeks)
- 다음 세 함수 f1, f2, f3 각각에 대해서 문제가 있는지, 문제가 있다면 어떤 문제가 있는지 설명하시오.
- f1 : 지역변수 x의 주소를 return함 - 지역변수는 해당 함수가 끝나면 유효하지 않아서 값이 바뀔 수 있음
- f2 : uninitialized pointer - px의 값이 임의의 값이므로 임의의 주소에 10을 넣으려고 함. Segmentation Fault
- f3 : memory leak 가능성 있음 - malloc으로 할당된 메모리가 free되지 않음. - f3를 부른 함수에서 free를 해 주지 않으면 memory leak 발생
int* f1(void) {
int x = 10;
return (&x);
}
int* f2(void) {
int *px;
*px = 10;
return px;
}
int* f3(void) {
int *px;
px = (int *) malloc(sizeof(int));
*px = 10;
return px;
}
- 다음 프로그램에서 string "abc", "def", "ghi"는 각각 어느 메모리 영역으로 할당되는가?
- abc - data
- def - stack
- ghi - heap
참고: https://stackoverflow.com/questions/1704407
cc -S 로 assembly code로 바꿔 보면 확실히 알 수 있음. 'abc' 만 .rodata에 있고, 'def'는 stack 영역에 복사, 'ghi'는 malloc의 return 값인 %rax의 indirect address로 복사됨.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *s1 = "abc";
char s2[] = "def";
char *s3 = (char *) malloc(4);
strncpy(s3, "ghi", 4);
printf("%s %s %s\n", s1, s2, s3);
free(s3);
return 0;
}
- rbtree-lab의 node 정의를 다음과 같이 바꾼다고 가정하면 코드 구현을 개선할 수 있습니다.
어느 부분을 어떻게 개선할 수 있을까요?- 코드가 비슷한 leftRotate(T, x), rightRotate(T, x) 두개의 함수를 하나의 함수 rotate(T, x, dir)로 구현할 수 있다. dir은 0 또는 1로, 같은 쪽 child는 child[dir]로 반대쪽 child는 child[1-dir]로 코딩할 수 있다.
참고: https://en.wikipedia.org/wiki/Red%E2%80%93black_tree#Operations
typedef struct node_t {
color_t color;
key_t key;
struct node_t *parent;
struct node_t *child[2];
} node_t;
'2️⃣ 개발 지식 B+ > draft (비공개 모음)' 카테고리의 다른 글
Proxy & Network 퀴즈 (1) | 2024.09.27 |
---|---|
Allocator 퀴즈 (2) | 2024.09.14 |
🏃[알고리즘/python] DP - 동전 유형 접근 컨셉 (2) | 2024.09.07 |