C'de malloc ve ram

Bu konuyu okuyanlar

Onur3211

Öğrenci
Katılım
2 Eylül 2018
Mesajlar
10
Reaksiyon puanı
1
Puanları
3
Yaş
39
Selam. Biraz karışık olduğu için özür dilerim. Çıktıdaki 3. ve 4. satıra bakınca sayıların kesişim kümesinin boş küme olmadığı görülüyor. Ram le ilgili tam bir bilgim yok. Ayrı olması gerektiğini düşünüyordum. 3. satır 2962344-2962424 ve 4. satır 2962360-2962368. 4. satırdaki 2962360 ve 3. satırdaki 2962368 yani 2962360 - 2962368 arasını ikisi kullanıyor. Burayı anlamadım. Neden yanlış düşünüyorum?

1574233738005.png

Kod:
#include<stdio.h>
#include<stdlib.h>

main()
{
    int k=10;
    char *cptr ;
    int *iptr = &k;
    double *dptr;
    
    printf("%d\n", iptr);
    
    cptr = (char*)malloc(sizeof(char));
    iptr = (int*)malloc(sizeof(int));
    dptr = (double*)malloc(sizeof(double));
    
    printf("%d - %d\n", cptr, cptr+100);//ilginç ramdaki sayılar birbirine girdi.
    printf("%d - %d\n", iptr, iptr+20);
    printf("%d - %d\n", dptr, dptr+1);
}
Mesaj otomatik birleştirildi:

Özür dilerim düzenleme yapamadım. Sayıları yanlış yazmışım.
3. satır 2962344-2962424 ve 4. satır 2962360-2962368. 4. satırdaki 2962360 ve 3. satırdaki 2962368 yani 2962360 - 2962368 arasını ikisi kullanıyor. Burayı anlamadım. Neden yanlış düşünüyorum?
Doğru hali
3. satır 2962344-2962424 ve 4. satır 2962360-2962368. 4. satırdaki 2962360 ve 3. satırdaki 2962424 yani 2962360 - 2962424 arasını ikisi kullanıyor. Burayı anlamadım. Neden yanlış düşünüyorum?
 
Son düzenleme:

hakaya

Asistan
Katılım
22 Temmuz 2013
Mesajlar
234
Reaksiyon puanı
109
Puanları
43
Char 1 byte, integer 4 byte, double 8 byte. Adresler bana doğru gibi geldi.
 

Onur3211

Öğrenci
Katılım
2 Eylül 2018
Mesajlar
10
Reaksiyon puanı
1
Puanları
3
Yaş
39
Char 1 byte, integer 4 byte, double 8 byte. Adresler bana doğru gibi geldi.
Çıktılardaki 4. satırda 2 eleman var. Double 8 byte kaplıyor. Ama çıktıda bu 8 byte'in içine 3. satırda 21 elemanlı int'te giriyor. Çıktılarda anlaşılıyor. Bazı şeyleri denemeden sordum. Zamanınızı alıyorsam özür dilerim.
 

hakaya

Asistan
Katılım
22 Temmuz 2013
Mesajlar
234
Reaksiyon puanı
109
Puanları
43
Sanırım şimdi anladım. Aynı adres aralığı görünüyor. iptr+20 ile diğer aralığı işaret etmiş oluyorsun ki bunu yapmasan iyi olur. [emoji4] iptr+1, iptr+2,... gibi birşey yapmayı planlıyorsan (array) baştan ona göre memory allocate et.
 
Üst