DAFTAR LABEL POPULER PENELITIAN.ID
DAFTAR LABEL POPULER PENELITIAN.ID
Jangan Buka Artikel Ini!
DAFTAR ARSIP POSTING PENELITIAN.ID
DAFTAR ARSIP POSTING PENELITIAN.ID
Mengakses Array di Luar Batas Bahasa C
- Dapatkan link
- Aplikasi Lainnya
Bahasa C tidak memberikan spesifikasi apapun yang berhubungan dengan masalah pengaksesan indeks yang bersifat tidak valid, dimana sesuai standar ISO C hal ini disebut dengan Undefined Behavior.
Undefined Behavior (UB) pada bahasa C merupakan hasil dari eksekusi kode program yang perilakunya tidak ditentukan oleh spesifikasi bahasa C yang dapat dipatuhi oleh kode program tersebut untuk status program saat ini seperti memori. Kondisi ini terjadi biasanya ketika kompilator kode sumber membuat suatu asumsi tertentu tetapi asumsi tersebut tidak terpenuhi selama waktu eksekusi.
satu, Akses Non Alokasi Lokasi Memori: program akan mengakses beberapa potongan memori yang dimiliki oleh kode program itu sendiri.
Contoh:
// Program untuk
// mendemostrasikan akses
// array diluar dari batasan
// pada bahasa C.
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5};
printf("arr [0] adalah %d\n", arr[0]);
// arr[10] berada diluar
// batasan.
printf("arr[10] adalah %d\n", arr[10]);
return 0;
}
Output:arr [0] adalah 1
arr[10] adalah -1786647872
Catatan: arr[10] sedang mengakses lokasi memori yang berisi nilai garbage.
Contoh:
// Program untuk
// mendemostrasikan akses
// array diluar dari batasan
// pada Bahasa C.
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5};
printf("arr [0] adalah"
" %d\n",arr[0]);
printf("arr[10] adalah"
" %d\n",arr[10]);
// Alokasi memori diluar dari
// batasan elemen.
arr[10] = 11;
printf("arr[10] adalah"
" %d\n",arr[10]);
return 0;
}
Output:Runtime Error : Segmentation Fault (SIGSEGV)
Catatan:
- Program tetap berada di dalam batas array dalam pemrograman bahasa C ketika menggunakan array untuk menghindari kondisi error.
- C++ menawarkan template class std::vector, yang tidak perlu melakukan pemeriksaan batas pada program. Vector juga memiliki fungsi anggota std::at() yang dapat melakukan pemeriksaan batas.
- Berbagai Metode Untuk Melakukan Reversi String pada Bahasa C [klik]
- Mencari Kecocokkan Karakter Menggunakan strpbrk() Bahasa C [klik]
- Membandingkan dua nilai Bahasa C Menggunakan Fungsi STRCOLL [klik]
- Memeriksa Tanda Baca Bahasa C Menggunakan Fungsi ISPUNCT [klik]
- Memeriksa Panjang Nilai Bahasa C Menggunakan Fungsi STRSPN [klik]
- Memeriksa Karakter Alfabet dan Angka Bahasa C Menggunakan ISALPHA dan ISDIGIT [klik]
- Tipe Data Label Menggunakan Statement Switch Bahasa C [klik]
- Dapatkan link
- Aplikasi Lainnya
Komentar
Posting Komentar
Hubungi admin melalui Wa : +62-896-2514-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
~ Ikatlah Ilmu dengan Memostingkannya ~
Terjadi kesalahan ketika user mengetik arr[5] dan berada diluar batas yang sebenarnya dilakukan oleh kompilator adalah pengaksesan alamat (arr + (5*sizeof(int)) dan menetapkan nilai pada alamat saat ini dapat menyebabkan nilai bermasalah.
BalasHapusBisa jadi, hanya mastah2 yang tahu apakah program bahasa c ini yang benar atau tidak. :D
HapusApaka beberapa kode program dapat bekerja diluar batas kode program bahasa C?
BalasHapusIya, Beberapa kode program pada bahasa c dapat bekerja diluar batas tanpa terjadi segmetation fault.
HapusNtahlah,
Hapus