Skip to main content

what is stack and heap in Rust language?

In Rust (like many programming languages), memory is divided into two main parts: the stack and the heap.

The stack is a region of memory that is used to store function call frames and local variables. The stack is fast and efficient because data is stored and accessed in a Last-In-First-Out (LIFO) order, which means that when a function returns, its frame is immediately popped off the top of the stack. In Rust, stack-allocated values are stored on the stack and are automatically cleaned up when they go out of scope.

The heap, on the other hand, is a region of memory that is used to store values that are required for a longer period of time. Unlike the stack, the heap does not have a fixed size and can grow or shrink as needed. Heap-allocated values are stored on the heap and are referenced through pointers. In Rust, heap-allocated values are managed through a system of ownership and borrowing, which ensures that data is automatically cleaned up when it is no longer needed.

Overall, the stack and heap are important concepts in Rust memory management, and understanding how they work is essential for writing efficient and safe Rust code.

example code 

This snippet demonstrates the difference between stack and heap allocation in Rust:

fn main() {

    let x = 5; // stack-allocated integer

    let y = Box::new(10); // heap-allocated integer stored in a Box

}

In this example, x is a stack-allocated integer, which means it is stored on the stack. When x goes out of scope (i.e. when the function ends), Rust automatically cleans up the memory used by x.

On the other hand, y is a heap-allocated integer stored in a Box. Box::new() creates a new instance of a Box, which allocates memory on the heap to store the integer. The Box smart pointer represents ownership of the data stored on the heap. When y goes out of scope (i.e. when the function ends), Rust automatically cleans up the memory used by the Box and the integer it points to.

This is just a simple example, but it demonstrates the basic difference between stack and heap allocation in Rust. In general, stack allocation is faster and more efficient, but heap allocation is necessary in situations where data needs to persist for a longer time or be shared between multiple functions.

Comments

Popular posts from this blog

Cara Disable Antimalware Service Executable di Windows 10

Disadari atau tidak, Windows 10 (dan juga windows-windows lainnya) hadir dengan banyak sekali aplikasi bloatware (aplikasi yang tidak perlu-perlu amat dimiliki oleh end user). Contohnya, adalah aplikasi yang seharusnya sudah tergantikan fungsinya oleh antivirus, seperti Antimalware Service Executable . Aplikasi ini dicurigai membuat Windows 10 mengalami inefisiensi memori/RAM, memakan resource yang tinggi, dengan Load yang tinggi (tanpa limit terkadang). Nah, berikut adalah cara men-disable nya: Tekan tombol Windows + I untuk membuka apliaksi Windows Setting. Pilih icon menu Update and Security Pilih lagi menu disamping kiri Windows Security Pada jendela baru yang muncul, ada pilihan Virus & Threat protection Klik ini Lalu matikan proses Real-time protection tersebut. Dengan Regedit. Buka dialog regedit, Windows + R dan ketik ‘regedit’ Cari Folder regedit ini HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender Buat sebuah DWORD baru dengan klik kanan

Setup Debian 11 Official Repository In sources.list (/etc/apt/sources.list)

When you install Debian 11 using a DVD, the OS installer sets the DVD as the source for getting packages for your system if you didn't choose to scan for network mirrors. Due to this reason, the system would ask you to insert a DVD if the disc is not present in the DVD drive when you try to install any software.  Also, the packages on DVD may not be the latest release.  So, we need to get the packages from the Internet. Media change: please insert the disc labeled 'Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04' in the drive '/media/cdrom/' and press [Enter] The /etc/apt/sources.list file with DVD as a source would look something like below. # deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04]/ bullseye contrib main deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04]/ bullseye contrib main deb http://security.debian.org/debian-security bullseye-security

Cara Membuat Live USB VMWare ESXi 6.7 di Linux (Debian/CentOS)

VMWare ESXi 6.7 menyediakan satu installer dalam format CDROM ISO. Dalam tutorial kali ini kita akan membuat sebuah live USB dengan menggunakan sistem Linux, misalnya Debian dan CentOS. Untuk keperluan tutorial kali ini silakan pastikan sudah ada download installer ISO ESXi 6.7 dari https://my.vmware.com Siapkan satu USB Flashdisk dengan kapasitas lebih dari 1GB. Format dalam satu partisi dengan tool yang biasa dipakai dalam format partisi FAT32. Misal dengan FDISK: [sourcecode] fdisk /dev/sdX [/sourcecode] format ke FAT32: [sourcecode]mkfs.fvat -F 32 -n USB /dev/sdX1[/sourcecode] selanjutnya, kita buat USB tersebut bootable dengan syslinux. Bagi linuxnya belum ada syslinux, silakan install dulu (apt-get install syslinux atau yum install syslinux).