程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-編程時的一個Error,望指教,謝謝

c-編程時的一個Error,望指教,謝謝

編輯:編程綜合問答
編程時的一個Error,望指教,謝謝

我用 Visual Stdio 2013 編寫C程序

出現下面這個錯誤:
錯誤 1 error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

最後我在程序前加上一句“ #define _CRT_SECURE_NO_WARNINGS "就消去錯誤,能解釋一下嗎? 我不懂。。。

最佳回答:


因為sprintf是不安全的,所以默認情況下編譯器拒絕編譯包含對它調用的代碼。
#define _CRT_SECURE_NO_WARNINGS 可以讓編譯器對此放行。

什麼叫不安全呢?我們知道,對於x86處理器來說,程序的數據和指令都是放在同一個內存中的,如果我們開辟的緩沖區比較小,而給sprintf傳遞了一個很大的字符串
就會發生緩沖區溢出,這樣可能破壞堆棧,如果堆棧中返回地址被修改,那麼精心構造的攻擊數據可能讓程序轉入另一個數據區域,並且將那裡的數據當成代碼執行。
如果這些代碼不懷好意,那麼就會破壞你的電腦為所欲為,所以叫不安全。

fengyunoo
fengyunoo
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved