Bir Sistem Programlama dersinde bu önceki dönemi aldım, C'de temel bir istemci / sunucu uygulamak zorunda kaldık sock_addr_in. Profesör ya da char arabellekleri (istemci ve sunucu arasında ileri ve geri veri gönderirken kullandığımız) profesörü bize sadece onları kullanmamızı bzerove memsetbaşlatmamamızı emretti . Nedenini hiç açıklamadı ve bunun geçerli bir nedeni olup olmadığını merak ediyorum?
Ben buraya bakın: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown o bzeronedeniyle sadece hiç bellek sıfırlama olacak gerçeğine daha verimlidir, öyle değil bu yüzden ek kontroller memsetyapmak zorunda. Yine de, memsetbelleği sıfırlamak için kesinlikle kullanmamak için bir neden gibi görünmüyor .
bzerokullanımdan kaldırılmıştır ve ayrıca standart bir C işlevi değildir. El kitabına göre, bu nedenle memsettercih edilir bzero. Peki neden hala kullanmak isteyeyim bzeroüzerinde memset? Sadece verimlilik artışı için mi yoksa daha fazlası mı? Aynı şekilde, faydaları nelerdir memsetüzerinde bzeroo yeni programlar için fiili tercih edilen seçenek yapmak?
memset"Biraz daha fazla kontrol etme" nedeniyle biraz daha az verimli olabilecek fikir kesinlikle erken bir optimizasyon örneğidir: Bir CPU talimatını atlamaktan ne kadar kazanç elde ederseniz edin, taşınabilirliğinizi tehlikeye atabildiğinizde buna değmez. kodu. bzerokullanılmıyor ve onu kullanmamak için yeterli sebep bu.