回覆列表
  • 1 # 外老師

    往簡單了說 就是為了相容老程式碼!也就是此前編寫的程式碼。

    如果禁用memcpy,那麼舊程式碼必須進行修改,才能在新版本中編譯透過。而一旦你把舊程式碼修改了,在舊的編譯環境中,又編譯不過了!所以不能禁用。

    如果更新memcpy的原始碼,可能需要使用到一些新的語言特性之類的,這些新特性可能導致程式碼在新舊編譯環境中的效果出現差異!進而出現系統bug!所以也不能輕易的重寫!

    導致memcpy和memcoy_s共存這樣一個狀況,最根本的原因,是在早期設計這些API的時候,沒辦法預見到後續的問題。只有等到這些問題出現,並且很嚴重的時候,才不得不採用這種打補丁的方式來處理。

    對於強迫症患者來說,這個確實難以忍受!但是這種策略,在軟體開發中經常使用。介面相容,是非常常見的事情!

  • 2 # 絕世痞子1

    因為有更安全的辦法:比如讓搞不定的人改用Java。

    另一個角度,連memcpy都搞不定,還是不要用C了,危險的可不止這一個Api.

    還有其他原因,像歷史相容問題。

    做為基礎庫,隨意廢除介面會被噴死的,做過基礎庫你就會明白,什麼叫難唸的經。

  • 中秋節和大豐收的關聯?
  • 女朋友經常脫了鞋子腳還沒洗就往床踩,我該怎麼辦?