İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C'de malloc ve ram

Onur321120.11.20195 cevap1.160 görüntüleme
2018'den beri10 mesaj
#1
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
#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);
}

Ö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?
düzenlendi
Cevaplar
2013'den beri234 mesaj
#2
Char 1 byte, integer 4 byte, double 8 byte. Adresler bana doğru gibi geldi.
Onur3211 Konuyu açan
2018'den beri10 mesaj
#3
hakaya dedi: ↑
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.
2013'den beri234 mesaj
#4
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. iptr+1, iptr+2,... gibi birşey yapmayı planlıyorsan (array) baştan ona göre memory allocate et.
👍 1
Onur3211 Konuyu açan
2018'den beri10 mesaj
#5
Anladım. ?Teşekkürler.
👍 1
2013'den beri234 mesaj
#6
Rica ederim.
👍 1

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.