Saat Anda belajar memprogram dalam C, sering kali orang mengabaikan masalah manajemen memori. Ini adalah satu-satunya bahasa di mana Anda benar-benar harus memahami konsep memori sejak hari pertama. Tentu saja, dimungkinkan untuk menulis program di mana Anda tidak perlu mengkhawatirkan memori sama sekali, misalnya program “Hello World” yang ada di mana-mana:
#include
int main(void){
printf("hello worldn");
return 0;
}
Di sini memori diperlukan untuk menyimpan string “hello worldn”, tetapi hal itu dilakukan secara internal, serupa dengan yang dilakukan di sebagian besar bahasa pemrograman. Namun begitu suatu program berisi masukan apa pun, Anda harus mulai memikirkan tentang manajemen memori. Saat suatu program berisi a scanf()
manajemen memori berperan. Berikut ini program sederhana dengan a scanf()
.
#include
int main(void){
int x;
printf("integer? ");
scanf("%d", &x);
printf("%d ", x);
return 0;
}
Di sini kuncinya adalah penggunaan &
di dalam scanf()
– ini memungkinkan alamat variabel x
untuk diteruskan ke program, yang mengidentifikasi tempat di memori tempat informasi itu scanf()
dibaca disimpan. Banyak hal yang harus diserap oleh programmer pemula dalam program yang sangat sederhana. Tapi apa alternatifnya? Tinggalkan &
dan programnya gagal. Jadi programmer harus belajar sejak tahap awal bagaimana memori dikelola. Konsep memori yang mendasari penggunaan &
tentu saja bisa diabaikan begitu saja, lebih memilih menggunakannya saja. Tapi itu juga merupakan kesalahan – pada akhirnya sebuah string perlu dimasukkan, tanpa no &
diperlukan. Kemudian kebingungan akan mulai terjadi, karena konsep memori telah diabaikan.
#include
int main(void){
char s(20);
printf("word? ");
scanf("%s", s);
printf("%s ", s);
return 0;
}
Ini berbeda dari kebanyakan bahasa pemrograman di mana musuh manajemen memori tidak harus terlibat dalam tugas-tugas rumah tangga sehari-hari seperti input variabel sederhana. Array dinamis? Tentu, kenapa tidak. Ini adalah salah satu masalah dalam menggunakan C sebagai bahasa pengantar – programmer pemula harus terlalu berkonsentrasi pada seluk-beluk bahasa tersebut, dibandingkan konsep pemrograman yang lebih luas.
Jika Anda mempelajari C, pelajari seluk-beluk memori sejak dini, dan sering-seringlah berlatih penerapannya.