close
[轉載自藍森林]
![]() 說實話我接觸c語言有段時間了 不過見識特別短,有一個很簡單問題 我們單位的技術在用字符串之前總是 memset(buffer , 0 , sizeof(buffer));這樣 當然了就是清空, 那麼我想既然能都清0,為什麼他不用 bzero(buffer , sizeof(buffer)); memset效率會比bzero高麼????? bzero不是專門清空的麼? 哪個兄弟幫解釋一下 小弟先謝謝啦 |
![]() 不過少寫一個參數倒是事實。 bzero 很少有人用,主要是因為它不如 memset 的標準化程度高。 很多標準都支持 memset 的,但是 bzero 只在 BSD 的早期標準中有。 |
![]() 那我看好多人些的sock程序裡邊在客戶端總有那麼一句 bzero(&server_add , sizeof(struct sockadd_in)); 恩恐怕就是為了少寫幾個字吧. 另外班長說這個標準...........ANSI???? 我不服和標準,就不能用對吧,也就是說 我寫memset的可移植性或許會比bzero高一些???? |
![]() 是; 是。 |
![]() 那麼就是說,其實用什麼對移植性來說都一樣啦 只不過你用bzero時候,人家說你"kao 土掉渣了" 你就說,"我比你少寫好幾個字呢!!!!" |
![]() 不知道你有沒有看到我這句? --> --> 奇怪了。在我引用的那個帖子裡,你的確只有兩個疑問啊! 至於你後來又修改了那個回復,那又怎麼能怪我呢? |
![]() 我知道memset的時候還不知道bzero. 而且memset感覺用處多點.能記一個幹嘛要記兩個呀 |
![]() 我當然看到那句話了"標準化程度"這個我理解就是memset符合更多的標準, 比如什麼iso9001~~~~~等等之類吧........ 而bezro出來的比較早,新的很多的標準他都不服合所以換了新環境 別人恐怕就不能讓它出來了對麼? 我是不是曲解了這句話含義了???????? |
![]() 請看man手冊: bzero: CONFORMING TO 4.3BSD. This function is deprecated -- use memset in new programs. memset: CONFORMING TO SVID 3, BSD 4.3, ISO 9899 |
![]() 感謝2位 |
![]() bzero只能清零 |
![]() 所以我認為,使用哪個函數,其實是個人風格的問題,不一定非得說 某個比另外一個更好! |
![]() |
![]() 所以我認為如果是清零,還是用bzero好。 我再cygwin和solaris的man page沒看到說bzero deprecated呀。那位兄弟在哪裡看到的? |
![]() Linux smb-dev 2.4.20-8bigmem #1 SMP Thu Mar 13 17:32:29 EST 2003 i686 i686 i386 GNU/Linux |
![]() #define bzero(ptr,n) memset(ptr,0,n) |
全站熱搜