Artariel Mesaj tarihi: Kasım 21, 2010 Paylaş Mesaj tarihi: Kasım 21, 2010 acemiyim bu diller konusunda resmen. incelediğim bazı program source kodlarında bazı şeyleri tanımlarken malloc veya new kullanıyorlar. ayrıca tanımladıkları şeye memset(..0..) gibi şeyler de dikkatimi çekti. sebebi nedir bunların ? yani normal tanımlama zaten bunların yerini karşılamaz mı ? normal int x; tanımıyla malloc/new x'in farkı nedir ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Kasım 21, 2010 Paylaş Mesaj tarihi: Kasım 21, 2010 memory allocate etmek icin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
senko Mesaj tarihi: Kasım 21, 2010 Paylaş Mesaj tarihi: Kasım 21, 2010 malloc genelde dinamik zamanda yeni alan istemek icin kullanilir. mesela sen koda int x; dediginde complier anlar ve sana x icin int'lik bir yer ayirir zaten. amma velakin diyelim ki isim alcaksin char* ile, ve arrayin uzunlugu adamin isminin uzunlugu kadar olsun istiyorsun. Bu ancak kod calistiktan sonra yapilabilecek bir hesap oldugundan malloc kullanmak guzel olur. (char*)malloc(sizeof(char[])); dedigin zaman sana adamin adi atiyorum senko ise 6chardan olusan bir yer acar sadece. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Kojiroh Mesaj tarihi: Kasım 21, 2010 Paylaş Mesaj tarihi: Kasım 21, 2010 Dinamik olarak bellekten yer ayırmak için. malloc/calloc yalnızca verdiğin boyut için yer ayırıp adresini döndürür, new ise nesneyi ilkler (instantiate). OOP'a yabancı değilsen, new operatörünü çağırdığında classın constructor'unu da çağırır diye düşünebilirsin. C/C++'ta kendiliğinden garbage collection olmadığı için ayırdığın yeri nesneyle işin bittiğinde boşaltman da gerekir. malloc/calloc ile ayırdıysan free(), new ile ayırdıysan delete veya delete[] kullanırsın. malloc mesela nerde kullanılır dersen, şöyle olabilir. Elinde bi fonksiyon vardır, buna gelen bi x parametresi vardır ve bu fonksiyonun çalışma esnasında x genişliğinde bi dizi yaratması gerekir. ANSI C'de bi dizinin genişliğini dinamik olarak belirleyemezsin, yani aşağıdaki gibi bi kullanım olamaz: void fonk(int x) { int arr[x]; ... } Onun yerine şöyle yaparsın: void fonk(int x) { int arr* = (int*)calloc(x, sizeof(int)); ... } Edit: Oha lan bi topiği açıp 15dk beklemek, sonra yazıp göndermek :( Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ceday Mesaj tarihi: Kasım 21, 2010 Paylaş Mesaj tarihi: Kasım 21, 2010 malloc olayına hic girme bence zorunda kalmadıkca. new operatorunu kullan. hem costructorı felan da arka planda cagırıyor kendisi. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sypro Mesaj tarihi: Kasım 22, 2010 Paylaş Mesaj tarihi: Kasım 22, 2010 linked list'lerle oynuyorsan falan da bol bol malloc/free ile öpüşmen gerekebiliyor. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Deacon Mesaj tarihi: Kasım 22, 2010 Paylaş Mesaj tarihi: Kasım 22, 2010 C'de new mi var :p Malloc kullanmalisin cunku malloc kullanarak dynamic memory'nin guzelliklerinden yararlaniyorsun. Ustteki mesajlarda da cok guzelce aciklamislar zaten. Eger cs okuyorsan, data structures dersinde oturur neden gerekli oldugu. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar