Skip to main content

Apa itu tumpukan overflow?

Stack Overflow adalah kesalahan pemrograman di mana upaya untuk menulis data ke blok memori tertentu gagal karena tidak ada ruang yang tersisa di blok.Jenis kesalahan ini terjadi dengan cara yang sama seperti buffer overflows, heap overflows, dan stack buffer overflows.Perbedaan antara jenis kesalahan ini tergantung pada struktur data komputer yang digunakan, dan fitur umum adalah bahwa upaya terjadi untuk menulis lebih banyak data daripada ada ruang yang tersedia untuk menahannya.

Gejala overflow tumpukan dapat bervariasi tergantung padaBahasa komputer yang digunakan dan mesin pelaporan kesalahan tersedia.Dalam C ++, overflow tumpukan sering memanifestasikan dirinya sebagai kesalahan segmentasi, dan sering tidak ada informasi tambahan yang diberikan untuk menentukan di mana atau bagaimana overflow terjadi.Luapan di Java sering menghasilkan crash mesin virtual yang memberikan file kesalahan yang cukup rinci.Praktik pemrograman yang diterima secara luas biasanya menentukan bahwa untuk setiap segmen memori yang dialokasikan program, program ini juga harus menghapus dirinya sendiri.C ++ memungkinkan mekanisme ini, dan pemantauan yang cermat dengan cara ini dapat menjaga jumlah memori yang digunakan program seminimal mungkin.Bahasa yang tidak menawarkan manajemen memori eksplisit, dan sebaliknya menggunakan manajemen memori implisit, lebih sulit untuk melindungi dari kesalahan overflow stack.Java menangani ingatannya sendiri di dalam mesin virtualnya, jadi data tidak dapat secara eksplisit dihapus sesuka hati untuk memberikan ruang untuk lebih..Meskipun ini tampaknya masuk akal pada awalnya, sebenarnya tidak terjadi.Bahasa dengan manajemen memori implisit sering memiliki kolektor sampah yang bebas dari blok memori yang tidak perlu, tetapi pengumpul sampah ini tidak selalu bekerja pada saat yang diharapkan oleh seorang programmer.Mengandalkan pengumpul sampah relatif berbahaya, dan tidak selalu melindungi program dari kesalahan yang meluap.

Kesalahan overflow dapat menjadi cataclysmic dan menghentikan seluruh program, atau mereka bisa hampir diam dan memungkinkan program untuk melanjutkan selanjutnya.Jenis kesalahan kedua ini sering kali paling sulit ditemukan karena kesalahan dapat terjadi yang berasal dari banyak baris kode sebelumnya.Stack overflow tidak sering mengharuskan pencarian melalui seluruh program, tetapi semakin lama program dapat berjalan setelah overflow, semakin sulit kesalahan yang mungkin ditemukan dan diperbaiki.