成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

另一個人們依賴的未文檔化行為:輸出緩沖區

開發 前端
“失敗時輸出緩沖區未定義”規則的一個重要例外是 COM 接口返回的輸出緩沖區規則是,輸出緩沖區始終被初始化,即使在失敗時也是如此。這對于確保編組器不會崩潰是必要的。例如,IUnknown::QueryInterface 方法的最后一個參數必須在失敗時設置為 NULL。

對于一個通過輸出緩沖區來返回數據的函數,如果函數執行失敗,則這個緩沖區里的數據是未定義的,調用者不應該對這些數據做出任何假定。

但是,還是有人會這樣做。

我曾經讀過 Michael Kaplan 的一篇關于輸出緩沖區的文章,在那篇文章中,用戶要求,即使函數執行失敗,函數也需要將輸出緩沖區里的數據做出一定的設置后才返回。
為什么輸出緩沖區在函數失敗的時候一定不能做出任何修改,因為有很多應用程序會依賴這個行為:函數調用失敗后,函數將不會對輸出緩沖區做任何改動,即使并沒有文檔指明函數一定要支持這個行為特征。

下面是一個簡化版本的例子代碼,它會依賴輸出緩沖區在函數調用失敗后不會有任何改動。

此代碼片段首先定義一個默認的注冊表鍵值,然后嘗試打開一個”更好”的鍵,假設如果打開失敗,hk 變量的內容將保持不變,因此將繼續具有原始默認值。RegOpenKeyEx 函數的規范不能保證這種行為,但這并不能阻止人們依賴它。

這只是 Win32 為了兼容性而需要定期維持的各種濫用行為的一個簡單示例。因為,畢竟,人們購買計算機是為了在計算機上運行程序。

“失敗時輸出緩沖區未定義”規則的一個重要例外是 COM 接口返回的輸出緩沖區規則是,輸出緩沖區始終被初始化,即使在失敗時也是如此。這對于確保編組器不會崩潰是必要的。例如,IUnknown::QueryInterface 方法的最后一個參數必須在失敗時設置為 NULL。

總結

到底要不要設置輸出緩沖區,好像確實是一個需要權衡的問題。
如果代碼庫作者決定在函數執行失敗的時候設置緩沖區,則必須在文檔中明確指明此行為。
我的個人習慣是:不論函數是否執行成功,都會在客戶提供的緩沖區設置一個合理值。
說到底,我看起來還是一個決定論者。

最后

Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關于Windows的小知識,對于廣大Windows平臺開發者來說,確實十分有幫助。
本文來自:《More undocumented behavior and the people who rely on it: Output buffers》

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-11-12 12:34:15

人工智能機器學習技術

2019-02-27 13:58:29

漏洞緩沖區溢出系統安全

2016-12-26 15:23:21

戴爾

2011-12-14 16:30:42

javanio

2017-01-09 17:03:34

2015-06-12 15:29:06

一個人的爆品

2011-03-28 14:02:07

MirahJava對手

2009-09-24 18:16:40

2012-01-12 10:09:55

Elementary 思路

2017-07-04 17:09:10

Map環形緩沖區數據

2014-07-30 11:21:46

2018-01-26 14:52:43

2009-11-16 17:26:17

Oracle優化緩沖區

2009-11-16 17:08:59

Oracle日志緩沖區

2013-03-08 02:52:03

個人開發項目糾錯

2013-08-14 10:23:22

創業個人創業互聯網創業

2025-03-07 09:18:10

2011-07-20 10:54:14

C++

2010-12-27 10:21:21

2021-04-15 14:56:21

云計算去中心化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久一级 | 天天干天天谢 | 国产精品一区二区福利视频 | 成人国产a | 自拍偷拍欧美 | 久久免费精品视频 | 亚洲国产精品一区二区三区 | 久久激情视频 | 国产亚洲www | 精品免费国产视频 | 国产精品免费一区二区 | 视频一区二区在线观看 | 国产精品九九九 | 成人在线观看亚洲 | 日韩有码一区 | 99久视频 | 成人在线视频网 | 亚洲精品2| 中文字幕在线第一页 | 久久亚洲欧美日韩精品专区 | 久久国产一区二区三区 | 亚洲精品国产电影 | 国产成人啪免费观看软件 | 欧美一区二 | 国产一区不卡在线观看 | 在线观看一区 | www.天天操 | 日韩av在线免费 | 日韩av一区二区在线观看 | 久在线精品视频 | 日韩精品久久久久 | 久久精品一区 | 最新免费视频 | 久久久久久91| 免费国产黄网站在线观看视频 | 欧美日韩综合视频 | 中文字幕 在线观看 | 日韩午夜一区二区三区 | 成人在线观看免费 | 亚洲女人的天堂 | 91av免费看 |