成人免费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

2017-07-04 17:09:10

Map環形緩沖區數據

2014-07-30 11:21:46

2012-01-12 10:09:55

Elementary 思路

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

2011-06-16 14:21:43

習慣管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本黄色大片免费 | 国产精品久久久久久久久久久免费看 | 欧美精品一区二区三区在线 | 国产精品国产成人国产三级 | av网站在线免费观看 | 国产精品久久久久久238 | 精品欧美一区二区三区久久久 | 最新毛片网站 | 久久久久久成人 | 国产探花在线精品一区二区 | 中文字幕在线观看视频网站 | 日本三级电影在线免费观看 | 日韩成人在线视频 | 伊人伊人网 | 久久国产综合 | 国产精品美女www爽爽爽视频 | 国产精品区一区二区三 | 欧美精品99| 亚州精品天堂中文字幕 | 在线观看国产精品视频 | 亚洲伦理自拍 | 91高清视频在线 | 大伊人久久| 欧美美女一区二区 | 中文字幕一区二区三区精彩视频 | 欧美激情一区二区三区 | 日韩一区二区三区av | 色视频一区二区 | 久久综合香蕉 | 日本超碰| 久久婷婷色 | 色天天综合| 视频在线观看亚洲 | 高清一区二区视频 | 免费观看a级毛片在线播放 黄网站免费入口 | 久久国产高清 | 97精品国产97久久久久久免费 | 国产欧美精品一区二区三区 | 一区二区日本 | 美女一区 | 亚洲一卡二卡 |