ASD Alokasi Memori Dinamis.  Untuk menggunakan sebuah variabel, kita harus mendeklarasikannya dulu  Pada saat deklarasi, slot memori dipesan untuk dipakai.

Slides:



Advertisements
Presentasi serupa
Pemrograman Terstruktur
Advertisements

PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
STRUKTUR DATA (5) Pointer dan Function
Pointer Konsep Pemrograman.
Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
Pointer.
Pertemuan 2 STRUKTUR DATA LINKED LIST
Struct By : Hendri Sopryadi
Struktur Sugeng Supriyadi, M.Kom.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Linked List Entin Martiana.
POINTER
Pointer dan Reference As’ad Djamalilleil
1 Pointer wijanarto. 2 Topik Introduction to Pointers Pointers dan Parameter Fungsi.
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Algoritma & Struktur Data Pointer Evangs Mailoa.
ARRAY OF STRUCT Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
Operasi pada pohon biner
STRUKTUR DATA (5) Pointer dan Function
Single Linked List Yuliana Setiowati, S.Kom.
Alokasi Memori Yuliana Setiowati.
Pemrograman Dasar Pointers.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
LINKED LIST by Yohana N.
STRUKTUR DATA Pointer dan Function
Algoritma dan Struktur Data
Algoritma dan Struktur Data
P O I N T E R. Merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untu menunjukan ke suatu alamat memori sehingga.
STRUKTUR DATA Structure.
Bab 8 Pointer Riyanto Sigit Konsep Dasar Pointer  Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain  Variabel.
Pertemuan ketujuh Struktur data st3telkom.ac.id
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Algoritma dan Struktur Data
POINTER.
Teknik Pemrog. Terstruktur 2
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
Algoritma dan Struktur Data Pointer Pada Struct. Definition — Structure Beberapa variabel (dapat berbeda tipe) yang dikelompokkan menjadi satu dengan.
Pemrograman Terstruktur
Informatique Engineering Ahmad Dahlan University May 17, 2004
Pertemuan 21 POINTER Bag.1 Dasar Pemrograman Renni Angreni, S.Kom.
REPRESENTASI FISIK LIST LINEAR
Algoritma dan Struktur Data
POINTER
Pertemuan 3 Variabel/Dinamik Pointer
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Pointer Pertemuan 10 Bahasa C.
Struktur Data Khoiriya Latifa, M.Kom.
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Linked List 6.3 & 7.3 NESTED LOOP.
Algoritma dan Struktur Data
Alokasi Memori Dinamis
Algoritma dan Struktur Data
Algoritma dan struktur data
KONSEP DASAR STRUKTUR DATA
STRUCTURE Struktur (Structure = struct) merupakan suatu struktur data yang terdiri dari satu atau lebih variabel yang bertipe data.
STRUKTUR DATA Array.
Variable Static & Linked List
Algoritma dan Struktur Data
POINTER
Pointer.
SINGLE LINKED LIST (SLL)
Transcript presentasi:

ASD Alokasi Memori Dinamis

 Untuk menggunakan sebuah variabel, kita harus mendeklarasikannya dulu  Pada saat deklarasi, slot memori dipesan untuk dipakai oleh variabel tersebut  Setelah dideklarasikan, variabel bisa digunakan  Ada cara untuk membuat variabel tanpa deklarasi!!!  Variabel tersebut baru dibuat saat dibutuhkan ketika program berjalan!!!  Setelah selesai digunakan, variabel tersebut harus dihapus!!!

Fungsi-Fungsi Alokasi Memory

sizeof()

Latihan

Cara membuat variabel tanpa deklarasi 1.Deklarasikan pointer yang menunjuk variabel yang akan dibuat 2.Jika pada saat program berjalan variabel tersebut dibutuhkan  Pesan slot memori untuk menyimpan variabel (malloc)  Simpan alamat slot memori pada pointer no 1  Gunakan variabel sesuai kebutuhan dengan cara akses tak langsung melalui pointer  Hapus variabel / lepas slot memori setelah variabel selesai digunakan (free)

Karakteristik Alokasi Memori Dinamis  Memori dapat dipesan atau dilepas sesuai kebutuhan pada saat program berjalan  Memesan slot memori menggunakan fungsi malloc  Melepas slot memori menggunakan fungsi free

malloc: memesan memori untuk variabel baru (tipedata *) malloc(size); Membuat pointer yang menunjuk slot memori yang dipesan. Tipe pointer sesuai tipe variabel yang dibuat sizeof() Banyaknya slot memori yang dipesan untuk menyimpan variabel baru ( gunakan fungsi sizeof() untuk mengetahui ukuran variabel). malloc() stdlib.h malloc() prot otype ada di stdlib.h

free: menghapus variabel setelah digunakan void free(pMemBlock); Pointer yang menunjuk variabel free() stdlib.h free() ada di stdlib.h IMPORTANT!!!!!! IMPORTANT!!!!!!: free()malloc() jangan free() pointer yang tidak pernah di malloc() free()Jangan free() pointer yang sudah difree free() memory leak BAD! Selalu free() variabel yang sudah selesai digunakan. Jika tidak, akan menyebabkan: ‘memory leak’ – BAD!

Contoh tanpa malloc() #include #include void main() { float jari, luas; jari = 7; jari = 7; luas = 3.14 * jari * jari; luas = 3.14 * jari * jari; printf("lingkaran dengan jari-jari : %f\n", jari); printf("lingkaran dengan jari-jari : %f\n", jari); printf("luasnya : %f\n", luas); printf("luasnya : %f\n", luas); getch(); getch();}

Review Pointer

Contoh dengan malloc() #include #include void main() { //deklarasi pointer //deklarasi pointer float *pjari, *pluas; //memesan slot memori untuk membuat variabel jari & luas. Simpan alamatnya pada pointer //memesan slot memori untuk membuat variabel jari & luas. Simpan alamatnya pada pointer pjari = (float *)malloc(sizeof(float)); pjari = (float *)malloc(sizeof(float)); pluas = (float *)malloc(sizeof(float)); pluas = (float *)malloc(sizeof(float)); if (pjari != NULL && pluas != NULL){//jika berhasil memesan memori if (pjari != NULL && pluas != NULL){//jika berhasil memesan memori //gunakan variabel jari dan luas melalui pointer //gunakan variabel jari dan luas melalui pointer *pjari = 7; *pjari = 7; *pluas = 3.14 * *pjari * *pjari; *pluas = 3.14 * *pjari * *pjari; printf("lingkaran dengan jari-jari : %f\n", *pjari); printf("lingkaran dengan jari-jari : %f\n", *pjari); printf("luasnya : %f\n", *pluas); printf("luasnya : %f\n", *pluas); //menghapus atau melepaskan slot memori yang ditunjuk oleh pjari dan pluas //menghapus atau melepaskan slot memori yang ditunjuk oleh pjari dan pluas free(pjari); free(pjari); free(pluas); free(pluas); } getch(); getch();}

Contoh tanpa malloc() #include #include struct motor{ float amps; float volts; float volts;}; typedef struct motor motor; void main() { motor m; m.volts = 4.5; m.volts = 4.5; m.amps = 6; m.amps = 6; printf("volts = %f", m.volts); printf("volts = %f", m.volts); printf("amps = %f", m.amps); getch(); getch();}

Latihan : dengan malloc? #include #include struct motor{ float amps; float amps; float volts; float volts;}; typedef struct motor motor; void main() { motor *m; // Buat alokasi memory dinamis // Cek alokasi memory // Cek alokasi memory // Free / bebaskan alokasi memory yang dipesan.... }

Peringatan!!! - malloc malloc() NULLJika malloc() gagal memesan memori, akan mengembalikan NULL malloc() NULLSelalu cek apakah malloc() mengembalikan NULL : char *pMsg; pMsg = (char *) malloc (sizeof(char)); if (pMsg == NULL) { printf(“Insufficient memory. Error Exit\n”); return -1; } pMsg = (char *) malloc (sizeof(char)); if (pMsg == NULL) { printf(“Insufficient memory. Error Exit\n”); return -1; }

Peringatan!!! malloc() Selalu free() variabel yang sudah selesai dipakai ‘memory leaks’Jika tidak akan menyebabkan ‘memory leaks’ Bisa terjadi crash karena kehabisan memori!

Peringatan!!! - free Hati – hati!!!Hati – hati!!! : Jangan pernah mem-free slot memori yang sudah di free! char *pMsg, *pWord, aLetter; pMsg = (char *) malloc (20 * sizeof(char); pWord = pMsg;/* both point to same byte 0 */ strcpy(pWord, “Welcome!\n”); /* use the memory */ free(pMsg);/* Free the memory. */ free(pWord); /* RUNTIME ERROR! No block to free! */

Peringatan!!! - free free()free() membebaskan slot memori yang ditunjuk sebuah pointer. Jika ada pointer lain yang menunjuk ke alamat slot yang sama, maka pointer tersebut menjadi invalid! Jangan difree lagi! char *pMsg, *pWord, letr = ‘A’; pMsg = (char *) malloc (20 * sizeof(char)); /* reserve a memory block */ pMsg = (char *) malloc (20 * sizeof(char)); /* reserve a memory block */ pWord = pMsg; /* another pointer to block*/ pWord = pMsg; /* another pointer to block*/ pMsg = &letr; /* pMsg now points to letr */ pMsg = &letr; /* pMsg now points to letr */ free(pWord); /* free the memory block */ free(pWord); /* free the memory block */