ASD. Alokasi Memori Dinamis

dokumen-dokumen yang mirip
Algoritma dan Struktur Data. Pertemuan 6 Alokasi Memori Dinamis

Algoritma dan Struktur Data. Linked List

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

A. TUJUAN PEMBELAJARAN

Algoritma dan Struktur Data. Pointer Pada Struct

Algoritma dan Struktur Data. Ramos Somya

Algoritma dan Struktur Data. Pertemuan 5 Pointer

04. Single Linked List

Pendahuluan Pemrograman Mikrokontroler

Review : Sifat Implementasi Linear List dengan Array

01. Review Array, Pointer dan Struktur

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

POINTER. Tim Alpro Teknik Informatika

SINGLE LINKED LIST (NON CIRCULAR)

Pointer dan Array Dinamik. IF2121 / Algoritma dan Struktur Data Sem /2018

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Algoritme dan Pemrograman

Algoritma dan Struktur Data Praktikum 3. Pointer

KONSEP POINTER DAN LINKED LIST

Struct Lanjutan: Studi Kasus

Linked List 6.3 & 7.3 NESTED LOOP

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

SENARAI BERANTAI (LINK LIST)

POINTER. Tim Alpro Teknik Informatika

Achmad Solichin.

KONSEP POINTER DAN LINKED LIST

Pemrograman Dasar C. Minggu 10

KONSEP POINTER DAN LINKED LIST

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

REPRESENTASI FISIK LIST LINEAR

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

BAHASA PEMROGRAMAN C

LIST. Dewi Sartika, M.Kom

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Single Linked List (1)

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

Sejarah C. Dirancang oleh Denis M. Ritchie tahun 1972 di Bell Labs.

Array Dimensi Satu. Pendahuluan. Slamet Kurniawan, S.Kom

ARRAY & POINTER. Listing 8.1. EXPENSES.C demonstrates the use of an array. AP3: Array & Pointer

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Achmad Solichin.

Tipe Data, Variabel, Input/Output

P 4 Bab 3 : Dasar Pemrograman C

Algoritma dan Struktur Data. Pertemuan 7 Linked List

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

05. Double Linked List

Praktikum Algoritma dan Struktur Data

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

Pointer. Yuliana Setiowati

// Created by Andri Andriyan // Linked List. #include <stdlib.h> #include <conio2.h> #include <stdio.h>

Algoritma Pemrograman. Fery Updi,M.Kom

MI, KA-D3, SIA, SIB. ADI, S.Kom.

elemen Dasar Bahasa Pemrograman C

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

Tipe Data dan Operator

DOUBLY LINKED LIST PROGRAM : DOUBLY LINKED LIST (TAMBAH SIMPUL DI BELAKANG)

KARAKTER DAN STRING, ARRAY, STRUCT DAN REVIEW PADA BAHASA C

DISUSUN OLEH BAB XI POINTER. alamat. memori. sepenuhnya. pointer. dan Pointer. menggunakan. menyebabkan. Alamat. untuk.

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

By : Agus Priyanto, M.Kom ST3 Telkom Purwokerto Structure and Pointer

BAB VI BAHASA C Pendahuluan

PERTEMUAN XI OPERASI FILE

BAB 6 FUNGSI TUJUAN PRAKTIKUM

BAHASA PEMROGRAMAN C LANGUAGE

Array (Single Dimension)

Algoritma Pemrograman & Struktur Data

Modul 1 Dasar Dasar Bahasa Pemrograman C

STRUKTUR DATA Pertemuan 1 s.d 8

Seharusnya. if (antrian.tail==max-1) return 0;

DIKTAT MATA KULIAH PEMROGRAMAN I BAB XI POINTER

Tipe Data Dasar. Data bisa dinyatakan dalam bentuk konstanta atau variabel.

Array (Single Dimension)

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

Konsep Pemrograman. Bab 11. Pointer 1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Identifier Tipe Data Yoannita, S.Kom.

QUEUE (ANTREAN) Prinsip Antrean : FIFO (First In First Out) FCFS (First Come First Serve) Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu

Struktur Program Bahasa C

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

Minggu ke-10 Pointer. Pendahuluan. Objektif. Bahan Bacaan

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Pengantar Bahasa C. Tim Pengajar ASD Semester I 2017/ /7/2017 FN/ASD/Sem /2018 1

PERTEMUAN VII FILE TEKS & FILE BINER

A. TUJUAN 1. Menjelaskan tentang konsep dari variabel pointer. zzzz. Address. Gambar 8.1 Variabel pointer px menunjuk ke variabel x

ALGORITMA DAN STRUKTUR DATA

Program Menggabungkan 2 Tipe String

STRUCTURE. Structure

BAB II Senarai Berantai (Linked List)

Pemrograman Dasar C. Minggu 9

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

MODUL PRAKTIKUM STRUKTUR DATA

BAB I. LARIK (ARRAY) Array (larik) ialah penampung sejumlah data sejenis (homogen) yang menggunakan satu identifier (pengenal).

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Dasar-dasar Pemrograman C DASAR PEMROGRAMAN & ALGORITMA

OPERATOR BAHASA C. Obyektif : 4. Mengetahui macam-macam operator dalam Bahasa C. 5. Mengetahui dan dapat menggunakan format pada tiap tipe data..

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

Transkripsi:

ASD Alokasi Memori Dinamis

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 malloc()prot otype ada di stdlib.h Banyaknya slot memori yang dipesan untuk menyimpan variabel baru ( gunakan fungsi sizeof()untuk mengetahui ukuran variabel).

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

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

Review Pointer

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

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

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

Peringatan!!! - malloc Jika malloc() gagal memesan memori, akan mengembalikan NULL Selalu cek apakah malloc() mengembalikan NULL: char *pmsg; 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 Jika tidak akan menyebabkan memory leaks Bisa terjadi crash karena kehabisan memori!

Peringatan!!! - free 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()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 */ pword = pmsg; /* another pointer to block*/ pmsg = &letr; /* pmsg now points to letr */ free(pword); /* free the memory block */