Pada Chapter ini kita kumpulkan istilah teknis yang sering muncul di dunia pemrograman C dan sistem. Setiap entri disertai definisi singkat dan konteks pemakaian. Daftar ini membantu pembaca memahami dokumen teknis berbahasa Inggris yang sering memakai istilah-istilah berikut tanpa penjelasan.
A #
- ABI (Application Binary Interface) — Spesifikasi bagaimana kode mesin berinteraksi: calling convention, layout struct, ukuran tipe, dan symbol mangling. ABI menentukan kompatibilitas biner antar compiler atau versi library.
- Address Sanitizer (ASan) — Tool yang mendeteksi buffer overflow, use-after-free, dan kesalahan memori lain saat runtime. Aktif dengan flag
-fsanitize=address. - Alignment — Persyaratan bahwa alamat suatu objek harus kelipatan tertentu (misalnya
intharus di alamat kelipatan 4). Memengaruhi struct layout dan akses memori. - Argument — Nilai yang diberikan ke parameter fungsi saat pemanggilan. Misalnya
printf("halo")—"halo"adalah argument. - Array — Kumpulan elemen bertipe sama yang menempati memori berurutan. Diindeks dari 0.
- ASCII — Kode 7-bit untuk merepresentasikan karakter Inggris. 128 karakter (0-127) termasuk huruf, digit, tanda baca, dan kontrol.
- Assembly — Bahasa tingkat rendah yang mendekati instruksi mesin. Output dari tahap compilation.
- Associativity — Aturan urutan evaluasi operator dengan precedence sama. Misalnya
a = b = cdievaluasi kanan-ke-kiri (right-associative).
B #
- Big Endian — Layout byte di mana byte paling signifikan disimpan di alamat terendah. Dipakai oleh network byte order (big endian).
- Bit-field — Member struct yang ukurannya dalam bit, bukan byte. Memungkinkan pemaketan data padat.
- Buffer — Area memori sementara untuk menampung data yang sedang dipindahkan. Misalnya stdout buffer menampung teks sebelum di-flush ke terminal.
- Buffer Overflow — Menulis data melebihi ukuran buffer, mengakibatkan korupsi memori. Sering jadi celah keamanan.
C #
- Calling Convention — Aturan bagaimana argument diteruskan ke fungsi dan nilai dikembalikan.
cdecladalah default di sebagian besar sistem x86. - Cast — Konversi tipe eksplisit dengan operator
(type). Misalnya(int)x. - Compilation Unit — Satu file .c yang sedang di-compile, termasuk header yang di-#include.
- Compiler — Program yang menerjemahkan kode sumber menjadi kode mesin. GCC dan Clang adalah compiler C populer.
- Concurrency — Kemampuan program memproses banyak task secara bersamaan, walau tidak benar-benar paralel.
- Constant — Nilai yang tidak berubah. Di C bisa berupa
#define,const, atauenum. - Core Dump — File berisi snapshot memori program saat crash. Dipakai untuk analisis post-mortem dengan gdb.
D #
- Deadlock — Situasi di mana dua thread atau lebih saling menunggu resource yang dipegang yang lain, sehingga semua terhenti.
- Declaration — Pernyataan yang memperkenalkan nama dan tipenya tanpa mendefinisikan implementasi. Misalnya function prototype.
- Definition — Pernyataan yang mengalokasikan memori atau memberikan implementasi. Misalnya function definition dengan body.
- Dereference — Mengakses nilai pada alamat yang ditunjuk pointer, dengan operator
*. - Dynamic Allocation — Alokasi memori saat runtime dengan
malloc,calloc, ataurealloc. Harus dibebaskan denganfree.
E #
- Endianness — Urutan byte dalam representasi data multi-byte. Little endian = byte paling signifikan di akhir; big endian = sebaliknya.
- errno — Variabel global yang menyimpan kode error dari fungsi standard library. Harus dicek segera setelah fungsi gagal.
- Escape Sequence — Notasi dalam string/char literal untuk karakter khusus, misalnya
\nuntuk newline,\tuntuk tab.
F #
- File Descriptor — Integer yang merepresentasikan file/socket yang terbuka di POSIX system. 0=stdin, 1=stdout, 2=stderr.
- Format Specifier — Notasi dalam printf/scanf yang menentukan tipe data yang dicetak/dibaca, misalnya
%duntuk int. - Function Pointer — Pointer yang menunjuk ke fungsi. Dipakai untuk callback, dispatch table, dan event handler.
- Fuzz Testing — Pengujian dengan input acak untuk menemukan crash atau perilaku tak terduga.
G #
- Garbage Collection — Mekanisme otomatis membebaskan memori yang sudah tidak terpakai. Tidak ada di C; programmer harus
freesendiri. - gcc — GNU Compiler Collection, compiler C paling populer di sistem open source.
H #
- Header File — File
.hberisi deklarasi yang dibagi antar file .c. Di-#include ke file yang membutuhkan. - Heap — Area memori untuk dynamic allocation. Tumbuh ke alamat tinggi; dikelola programmer.
I #
- IDE (Integrated Development Environment) — Aplikasi yang menggabungkan editor, compiler, debugger, dan tools lain. CLion adalah IDE populer untuk C.
- Include Guard — Pola
#ifndef HEADER_H ... #define HEADER_H ... #endifuntuk mencegah multiple inclusion. - Integer Overflow — Hasil operasi integer melebihi rentang tipenya. Untuk signed overflow, perilaku UB.
L #
- Linker — Program yang menggabungkan object file dan library menjadi executable atau shared library.
ldadalah linker GNU. - Little Endian — Layout byte di mana byte paling signifikan di alamat tertinggi. Default di x86 dan ARM.
- Leak Sanitizer (LSan) — Tool yang mendeteksi memory leak. Otomatis aktif bersama ASan di Linux.
M #
- Macro — Aturan substitusi teks yang diproses preprocessor.
#define MAX(a,b) ((a)>(b)?(a):(b)). - Memory Layout — Cara program C disusun di memori: text (kode), data (variabel initialized global), bss (uninitialized), heap, stack.
- Mutex (Mutual Exclusion) — Objek sinkronisasi yang memastikan hanya satu thread yang mengakses resource pada satu waktu.
N #
- Null Pointer — Pointer yang menunjuk ke alamat 0 (NULL). Dereferensi null pointer menyebabkan segfault.
O #
- Object File — File
.ohasil compile yang belum di-link. Berisi kode mesin dan symbol table. - Opaque Pointer — Pointer ke tipe yang definisinya disembunyikan. Hanya API yang bisa mengakses internal struct.
- Overflow — Hasil operasi melebihi kapasitas tipe. Untuk unsigned, terdefinisi (wrap-around); untuk signed, UB.
P #
- Padding — Byte tambahan yang disisipkan ke struct untuk memenuhi alignment requirement. Menambah sizeof struct tanpa manfaat data.
- Parameter — Variabel di definisi fungsi yang menerima argument. Misalnya
int add(int a, int b)—adanbadalah parameter. - Pointer — Variabel yang menyimpan alamat memori variabel lain.
int *pmenyimpan alamat suatuint. - POSIX — Standar IEEE untuk interface sistem operasi (Portable Operating System Interface). Mendefinisikan fork, exec, signals, sockets, dll.
R #
- Race Condition — Bug saat hasil eksekusi tergantung urutan thread yang tidak deterministik. Diselesaikan dengan mutex atau atomics.
- Reentrant — Fungsi yang aman dipanggil bersamaan dari multiple thread atau signal handler. Tidak memakai global state, tidak memanggil non-reentrant function.
- restrict — Qualifier yang menjanjikan ke compiler bahwa pointer tidak aliasing, memberi peluang optimasi.
S #
- Sanitizer — Tool yang menyisipkan pemeriksaan runtime ke program untuk mendeteksi UB dan kesalahan memori. ASan, UBSan, LSan.
- Segmentation Fault (Segfault) — Sinyal SIGSEGV dikirim ke program saat mengakses memori yang tidak valid. Biasanya karena null deref atau array out-of-bounds.
- Signed — Tipe integer yang bisa menyimpan nilai positif dan negatif. Bit paling signifikan adalah sign bit.
- Stack — Area memori untuk variabel lokal dan return address. Tumbuh ke alamat rendah; dikelola otomatis.
- Static Storage Duration — Variabel yang lifetime-nya sepanjang program. Termasuk variabel global dan
staticlokal. - Symbol — Nama yang dipakai linker untuk mencari definisi fungsi atau variabel lintas object file.
T #
- Thread — Unit eksekusi dalam satu proses. Berbagi memori dengan thread lain di proses yang sama.
- Translation Unit — Satu file .c setelah preprocessing (semua #include sudah diexpand). Satu unit compile ke satu .o.
- Type Qualifier — Keyword yang memodifikasi tipe:
const,volatile,restrict,_Atomic.
U #
- UB (Undefined Behavior) — Kondisi di mana standar C tidak menentukan perilaku. Compiler boleh melakukan apa saja. Contoh: signed overflow, null deref, use-after-free.
- Unsigned — Tipe integer yang hanya menyimpan nilai non-negatif. Range-nya dua kali signed.
V #
- VA_List — Tipe untuk mengakses argumen variadic lewat
va_start,va_arg,va_end. - VLA (Variable Length Array) — Array yang ukurannya ditentukan saat runtime (C99). Tidak disarankan untuk ukuran besar.
- Void Pointer — Pointer
void *yang bisa menunjuk tipe apa saja. Perlu cast sebelum dereference.
W #
- Watchpoint — Breakpoint yang memantau perubahan nilai variabel di gdb. Berbeda dari breakpoint yang memantau eksekusi.
- Wildcard Pointer — Pointer yang tidak diinisialisasi. Dereferensi menyebabkan UB.