回覆列表
-
1 # 外老師
-
2 # 絕世痞子1
因為有更安全的辦法:比如讓搞不定的人改用Java。
另一個角度,連memcpy都搞不定,還是不要用C了,危險的可不止這一個Api.
還有其他原因,像歷史相容問題。
做為基礎庫,隨意廢除介面會被噴死的,做過基礎庫你就會明白,什麼叫難唸的經。
因為有更安全的辦法:比如讓搞不定的人改用Java。
另一個角度,連memcpy都搞不定,還是不要用C了,危險的可不止這一個Api.
還有其他原因,像歷史相容問題。
做為基礎庫,隨意廢除介面會被噴死的,做過基礎庫你就會明白,什麼叫難唸的經。
往簡單了說 就是為了相容老程式碼!也就是此前編寫的程式碼。
如果禁用memcpy,那麼舊程式碼必須進行修改,才能在新版本中編譯透過。而一旦你把舊程式碼修改了,在舊的編譯環境中,又編譯不過了!所以不能禁用。
如果更新memcpy的原始碼,可能需要使用到一些新的語言特性之類的,這些新特性可能導致程式碼在新舊編譯環境中的效果出現差異!進而出現系統bug!所以也不能輕易的重寫!
導致memcpy和memcoy_s共存這樣一個狀況,最根本的原因,是在早期設計這些API的時候,沒辦法預見到後續的問題。只有等到這些問題出現,並且很嚴重的時候,才不得不採用這種打補丁的方式來處理。
對於強迫症患者來說,這個確實難以忍受!但是這種策略,在軟體開發中經常使用。介面相容,是非常常見的事情!