Re: [programming] mengakses array melalui pointer ke struktur

2001-04-03 Terurut Topik Steven Haryanto

At 4/3/2001 04:32 AM, you wrote:
Linux, Windows, dan hampir semua OS moderen yg. lain memang bakalan
memfree memory ketika suatu proses exit.

tepatnya mungkin: "semua OS yang tidak amat primitif". DOS aja
(and I bet CP/M, Amiga, etc) begini. cleaning up process itu
tugas yang basic banget.

Tapi nggak semua OS kelakuannya kayak
gini. Seinget saya bbr. OS (terutama yg. embedded/realtime OS) enggak, soalnya
OS-OS itu nggak mengenal konsep proses.

Hm, menarik juga yah.

--
sh

jadi pada nit-picking semua nih :p



Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Yohanes Nugroho

On Sat, 31 Mar 2001, david goo wrote:

 apakah possible untuk mengakses (memanipulasi array) melalui pointer ke 
 struktur?

possible

 struct struktur *coba;
 
 coba-angka[1]=100;  disini terjadi error dan core dump
 
 gimana sih solusinya??

memori untuk coba udah dialokasikan belum?
misalnya : coba = (struct struktur *)malloc(sizeof(struct struktur))


-- 
Salam
Yohanes

http://www.negeriimpian.com




Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Muhammad Sudirman



---
Terima kasih untuk Ibunda-ku tercinta
  atas segala yang telah engkau perjuangkan untukku
dirman : 
  quick info : finger [EMAIL PROTECTED]
  e-mail : [EMAIL PROTECTED]
  homepage   : http://malabar.if.itb.ac.id/~m197047
---

On Sat, 31 Mar 2001, david goo wrote:

 ini ada lagi pertanyaan mengenai pemrograman C.
 apakah possible untuk mengakses (memanipulasi array) melalui pointer ke 
 struktur?

Tentu donk .

 mis:
 struct struktur {
int angka[10];
 }
 
 
 
 struct struktur *coba;
 
 coba-angka[1]=100;  disini terjadi error dan core dump
 
 gimana sih solusinya??
 

Jelas aja error ...
Kapan alokasi--nya  ???

/* solusi.c */
#include stdio.h
#include stdlib.h
int main(){
   /* Kamus */
   struct struktur{
  int angka[10];
   }; 
   struct struktur *coba;
   int i;

   /* Algoritma */
   coba = (struct struktur*)malloc(sizeof(struct struktur)); /* --- ini lho yang 
kurang */
   for(i=0;i10;i++){
  coba-angka[i] = (i+1)*10;
   }
   for(i=0;i10;i++){
  printf("%d ",coba-angka[i]);
   }
   printf("\n");
   return(0);
}



Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Muhammad Sudirman


---
Terima kasih untuk Ibunda-ku tercinta
  atas segala yang telah engkau perjuangkan untukku
dirman : 
  quick info : finger [EMAIL PROTECTED]
  e-mail : [EMAIL PROTECTED]
  homepage   : http://malabar.if.itb.ac.id/~m197047
---

On Sat, 31 Mar 2001, david goo wrote:

 ini ada lagi pertanyaan mengenai pemrograman C.
 apakah possible untuk mengakses (memanipulasi array) melalui pointer ke 
 struktur?
 mis:
 struct struktur {
int angka[10];
 }
 
 
 
 struct struktur *coba;
 
 coba-angka[1]=100;  disini terjadi error dan core dump
 
 gimana sih solusinya??
 

Tambahan ...
Bila menggunakan pointer ke suatu struktur, ada baik--nya untuk
mengecek apakah sudah melakukan alokasi


#include stdio.h
#include stdlib.h
int main(){
   /* Kamus */
   struct struktur{
  int x;
  int y;
   };
   struct struktur *coba;
   
   /* Algoritma */
   
   coba = (struct struktur*)malloc(sizeof(struct struktur));
   /* Bila baris di atas tidak ada, maka akan ada pesan error
   ** seperti pada program saudara */
   coba-x = 100;
   coba-y = 10;
   printf("Nilai x : %d \n",coba-x);
   printf("Nilai y : %d \n",coba-y);
   return(0);
}



Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Hadipurnawan Satria

Quoting david goo [EMAIL PROTECTED]:

 pertama-tama makasih kepada Hadi PS karena telah menjawab pertanyaan
 saya! 
 Thanks :)
 ini ada lagi pertanyaan mengenai pemrograman C.
 apakah possible untuk mengakses (memanipulasi array) melalui pointer ke
 
 struktur?
 mis:
 struct struktur {
int angka[10];
 }
 
 
 
 struct struktur *coba;
 
 coba-angka[1]=100;  disini terjadi error dan core dump
soalnya anda baru bikin pointer ke struct struktur, dan belum bikin struktur-nya
beneran, kalo tetep pake pointer musti di-malloc dulu, atau langsung bikin aja
tanpa pointer.

yang pake pointer:
struct struktur *coba = (struct struktur *)malloc(sizeof(struct struktur));
coba-angka[1] = 100;

langsung tanpa pointer:
struct struktur coba;
coba.angka[1] = 100;

semoga bisa membantu.


Hadi PS
[EMAIL PROTECTED]
--
Visit Ukhuwah.or.id at http://www.ukhuwah.or.id
The Coolest Islamic Portal in Indonesia


Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Benny Prijono

jangan lupa untuk check pointer yg. di-return-ed oleh malloc(), apakah
NULl atau enggak, dan untuk mem-free() pointer tsb. sebelum program
exit.. :-)

int main()
{
   ...
   coba = malloc(sizeof(struct struktur));
   if (coba == NULL) return 1;
   ...
   free(coba);
   return 0
}

-- 
cheers,
Bennylp

Muhammad Sudirman wrote:
 
 Tambahan ...
 Bila menggunakan pointer ke suatu struktur, ada baik--nya untuk
 mengecek apakah sudah melakukan alokasi
 
 #include stdio.h
 #include stdlib.h
 int main(){
/* Kamus */
struct struktur{
   int x;
   int y;
};
struct struktur *coba;
 
/* Algoritma */
 
coba = (struct struktur*)malloc(sizeof(struct struktur));
/* Bila baris di atas tidak ada, maka akan ada pesan error
** seperti pada program saudara */
coba-x = 100;
coba-y = 10;
printf("Nilai x : %d \n",coba-x);
printf("Nilai y : %d \n",coba-y);
return(0);
 }



Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik DasaMan

At 11:13 AM 4/2/01, Muhammad Sudirman wrote:
Tambahan ...
Bila menggunakan pointer ke suatu struktur, ada baik--nya untuk
mengecek apakah sudah melakukan alokasi

Tambahan lagi... bila anda memakai C++, ada baiknya cobalah sesekali 
memprogram pakai STL. Uenak sekali bikin manipulasi list yang ajaib2, udah 
gak usah pusing2... sudah ada semua tinggal pake...

Gantinya jedotin kepala ke tembok karena masalah template bersarang 
(percayalah, kalau pake STL pasti bakal sering ketemu masalah ini... 
apalagi kalau compiler-nya MSVC)

Dasa - ICQ:10195313
We must fight as a race for everything that makes for a better country
and a better world. We are dreaming idiots and trusting fools to do
anything less.
 - Ralph Bunche



Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Ronny Haryanto

On 03-Apr-2001, Steven Haryanto wrote:
 At 4/2/2001 06:55 PM, you wrote:
 jangan lupa untuk check pointer yg. di-return-ed oleh malloc(), apakah
 NULl atau enggak, dan untuk mem-free() pointer tsb. sebelum program
 exit.. :-)
 
 kayaknya kalo sebelum proses berakhir gak usah boleh ya? biar irit
 ngetik :p

Setuju. Pas exit kan semua memory (stack+heap) di-free-kan otomatis sama
MM-nya kernel (bener ya?), jadi kalo di-free() pas sebelum exit ya kayaknya
redundant.

Biasanya org panggil free() kalo masih ada yg mau dikerjakan (belum exit)
tapi juga mau ngirit memory dg membebaskan memory yg tadinya dialloc tapi
sudah ndak dipake lagi. Ini terutama berguna utk long-running program
seperti daemons. Actually Netscape should use more of it, too :)

Sorry kalo nit-picking :)

Ronny


Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]




Re: [programming] mengakses array melalui pointer ke struktur

2001-04-02 Terurut Topik Benny L . Prijono

On Mon, 02 Apr 2001, you wrote:
 Setuju. Pas exit kan semua memory (stack+heap) di-free-kan otomatis sama
 MM-nya kernel (bener ya?), jadi kalo di-free() pas sebelum exit ya kayaknya
 redundant.
 

sebenernya untuk kasus ini nggak papa sih, tapi "for the sake of tutorial",
sebaiknya jangan ah..  

Linux, Windows, dan hampir semua OS moderen yg. lain memang bakalan
memfree memory ketika suatu proses exit. Tapi nggak semua OS kelakuannya kayak
gini. Seinget saya bbr. OS (terutama yg. embedded/realtime OS) enggak, soalnya
OS-OS itu nggak mengenal konsep proses. Jadi _mungkin_ untuk OS-OS ini,
memory bakalan nggantung kalo nggak di-free. Sori nggak bisa ngasi tau lebih
spesifik, soalnya emang nggak terlalu pengalaman di bidang ini...

Trus lagi ada bbr. jenis memory yg. nggak otomatis di-free kalau program exit. 
Contohnya System V shared memory (man shmget). Kalau nggak salah sih shared 
memory itu bakalan dijaga terus di kernel meskipun proses exit(), sampai dia 
manually di free (man shmctl, man ipcs, man ipcrm) atau kernelnya di reboot.
Jadi nggak semua memory bakalan di free kalau proses exit().

Satu lagi, nanti kalau program membesar, pasti akan ada bug, dan salah satu bug
yg. sering muncul adalah memory leak. Kalau udah gitu, yg. kita lakukan adalah
men-trace memory leak itu dengan tools (misalnya Rational Purify, atau mbikin
sendiri juga bisa sih). Nah, dengan adanya malloc() yg. secara sengaja nggak di
free seperti itu, bakalan ngrusak output dari trace itu, soalnya ntar kita harus
mbedain mana memory yg. sengaja nggak di free, dan mana yg. merupakan bug.

 Biasanya org panggil free() kalo masih ada yg mau dikerjakan (belum exit)
 tapi juga mau ngirit memory dg membebaskan memory yg tadinya dialloc tapi
 sudah ndak dipake lagi. Ini terutama berguna utk long-running program
 seperti daemons. Actually Netscape should use more of it, too :)
 

setuju (untuk kasus umum lho).

 Sorry kalo nit-picking :)
 

saya lebih lagi kayaknya.. :-)

 Ronny
 


Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]