Soalan oleh Izzad: saya ingin mengetahui tentang pengurusan ingatan(memory)dalam os saya harap rakan yang lain akan membantu saya untuk memahami dengan lebih lanjut. --- Jawapan: Memory management bermaksud memulangkan kesemua memory (RAM) yang kita pinjam dari komputer dengan bersih dan sempurna. Sepanjang larian program yang kita tulis, mungkin kita ada melakukan apa yang dipanggil sebagai 'dynamic allocation'. Dalam konteks C++, ini bermaksud: CMyClass *pMyObj; pMyObj = new CMyClass; Arahan 'new' ini bermaksud "hai komputer, kasik pinjam 20 byte kejap, aku nak letak objek aku." Hanya setelah kita membuat allocation ini barulah kita boleh menggunakan objek yang kita cipta itu. Jika komputer kita mempunyai cukup memory, maka ia akan berikan kita pinjam sebanyak mana yang kita minta itu. Bilangan byte yang kita minta tidaklah semestinya 10 byte -- tukangtaip hanya gunakan nombor itu sebagai contoh saja. Bilangan byte sebenar akan dikira oleh komputer secara automatik berdasarkan jumlah data dan fungsi yang terkandung di dalam class kita itu. Jadi kita pun buatlah operasi-operasi terhadap objek yang telah kita cipta: pMyObj->Run(); pMyObj->PrintResults(); Setelah kita sudah habis gunakan objek, maka apa perlu kita buat? Ingat bahawa kita telah meminjam memory dari komputer, jadi etikanya bila kita pinjam barang orang, kita kenalah pulangkan balik ye tak? Untuk memulangkan balik memory yang kita pinjam itu, kita gunakan arahan delete seperti ini: delete pMyObj; Keseluruhan arahan itu kelihatan begini: CMyClass *pMyObj = new CMyClass; pMyObj->Run(); pMyObj->PrintResults(); delete pMyObj; Apa akan terjadi kalau kita terlupa buat allocation di atas? Program kita akan crash. Sebaliknya, apa yang akan terjadi jika kita terlupa untuk pulangkan balik memory (arahan delete)? Program kita tidak akan crash. Dia diam saja, dan berjalan seperti biasa seolah tiada apa yang berlaku. Sebenarnya dalam praktis pemprograman, keadaan ini adalah lebih membahayakan dari program yang crash? Kerana apa? Kerana walaupun komputer tu senyum saja, tapi sebenarnya dia senyum dalam kesakitan. Dalam perkataan teknikal ia dipanggil 'undetected error'. Hasilnya, akan terjadilah memory leak di mana bilangan RAM kita kelihatan semakin berkurangan. Jika keadaan ini berlaku berlarutan, komputer kita akan terus kehilangan RAM dan akhir sekali komputer itu sendiri akan crash. Maka adalah penting bahawa memory management dilakukan dengan sempurna. Contoh yang tukangtaip berikan adalah contoh mudah; memory management menjadi lebih rumit bila kita menggunaka struktur-struktur data yang lebih kompleks, contohnya [dynamic] array, linked lists, graphs dan trees. Sesetengah bahasa pemprograman mempunyai memory management yang automatik; seperti Java dan C. Jadi anda tak perlu bimbang tentang perkara ini. Namun jika anda memprogram menggunakan Pascal, C, C++, ia harus diutamakan pada peringkat awal coding lagi agar program anda tidak merosakkan sistem. -Tukangtaip- http://www.hazman.com