From: Halil Demirezen (halild@bilmuh.ege.edu.tr)
Date: Fri 08 Aug 2003 - 00:24:37 EEST
>
> 0 - 100 Stack olsun.
> 500 - 1000 Data bolgesi (data rw-)
> 2000 - 4000 Kod bolgesi (text r-x)
>
> Simdi fonksiyona girince
>
> 100 - s -> Icerigi belirsiz.
> 99 - return icin geri donus adresi.
>
> s = malloc(10);
>
> 100 - s -> icerigi malloc'un dondurdugu deger olur.
> . Diyelim ki malloc geriye 500 adresini dondurdu.
> . bu durumda s'nin icindeki deger 500'dur. Bu, *s yazdiginizda
> . kullanilacak degerdir.
>
> *s = 1;
>
> s = 500 olduguna gore, 500. Bellek noktasina 1 konacaktir.
Simdi burada ben bisey sormak istiyorum...
diyelim;
char *str;
diye bir tanimlama yaptik..
bizim de stack yukardaki ornekteki gibi...
0 - 100 stack olsun ve
str degiskeni de 100 de bulunsun. Yani memory de 100 nolu mem adresi ki
oda bizim stack segment te yer alsin, str nin hucresi bir nevi..
Simdi (char *)malloc(10) da data seg. uzerinde 2400 adresinden baslayan bir
bufferin addresini geriye dondursun. Boylece
s = (char *)malloc(10);
Boylece 100 nolu stack icinde 2400 degeri var;
Benim soru burada: C de
str dedigimiz zaman 2400 degeri
*str dedigimiz zaman 2400 un ilk hucresindeki deger aklimiza geliyor.
Bu konuda sanirim bir problem cekmiyorum.
peki ben 100 degerini elde etmek istiyorsam o zaman
&str kullanmam gerekiyor deil mi? bu konuda hatam var mi?
Saygilar ve sevgiler.