일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- slowpath
- memory
- proc
- lruvec
- devicedriver
- multiqueue
- slub
- vm_area_struct
- slab
- Kernel
- kafka
- blk-mq
- strex
- commit
- spinlock
- pmap
- fastpath
- kmalloc
- Linux
- Apache
- BLOCK
- NDK
- Network
- vmalloc
- page
- allocator
- mm_struct
- buddy_system
- 카프카
- Today
- Total
목록IT/C Language (3)
Art of Pr0gr4m
다음 코드의 결과를 예상해보자. int x = 1, y = 2; // clang을 사용한다면 x와 y 선언 순서 변경 int *px = &x + 1; int *py = &y; if (!memcmp(px, py, sizeof(*px))) { // px와 py는 같은 주소를 참조함 *px = 3; printf("x : %d, y : %d, *px : %d, *py : %d\n", x, y, *px, *py); }오브젝트 x와 y가 메모리상에 연속되어있는 시스템에서는 당연히 다음과 같은 결과를 보일 것이다.#1x : 1, y : 3, *px : 3, *py : 3하지만 이는 Undefined Behavior 코드로, 다음과 같은 결과를 만들어낼 수..
C언어 좀 만지다가, int a = { 2 };와 같은 문법이 잘 동작하는걸 보고 오랜만에 표준 문서를 뒤져봤다. KNK 같은 책의 initializers 파트에서 보면 simple variable은 expression of the same type as the variable로 초기화하고, array, structure, or union은 a series of values enclosed in braces로 초기화한다고 나온다. 그런데, 대박. ISO/IEC 9899:201x 6.7.9.11 번을 보면 "The initializer for a scalar shall be a single expression, optionally enclosed in braces." 라고 나와있다.. optionally ..
ISO/IEC 9899:1999 ISO/IEC 9899:2011