共用方式為


C/C++ 程式碼分析警告

更新:2007 年 11 月

本節將列出 C/C++ 程式碼分析警告清單 (編號範圍從 C6000 到 C6999)。

在本節中

警告編號

說明

C6001

警告 C6001: 使用未初始化的記憶體 <variable>

C6011

警告 C6011: 取值 NULL 指標 <name>

C6029

警告 C6029: <function> 的呼叫中可能有緩衝區滿溢: 使用了未經確認的值

C6031

警告 C6031: 已忽略傳回值: <function> 可能傳回未預期的值

C6053

警告 C6053: <function> 的呼叫可能沒有以零結束的字串 <variable>

C6054

警告 C6054: 字串 <variable> 可能不是以零結尾

C6057

警告 C6057: <function> 呼叫中的字元數/位元組數不符,因而造成緩衝區滿溢

C6059

警告 C6059: <function> 呼叫中參數的長度不正確。請傳遞剩餘字元數,而非 <variable> 的緩衝區大小

C6063

警告 C6063: 遺漏 <function> 的字串引數 (與轉換規範 <number> 對照)

C6064

警告 C6064: 遺漏 <function> 的整數引數 (與轉換規範 <number> 對照)

C6066

警告 C6066: 傳遞非指標做為參數 <number>,但 <function> 呼叫需要指標

C6067

警告 C6067: 參數 <number> (於 <function> 呼叫中) 必須為字串的位址

C6200

警告 C6200: 索引 <name> 超出有效的索引範圍: <min> 到 <max> (此索引範圍屬於非堆疊緩衝區 <variable>)

C6201

警告 C6201: 可能為堆疊配置的緩衝區 <variable> 發生緩衝區滿溢: 索引 <name> 超出有效的索引範圍: <min> 到 <max>

C6202

警告 C6202: 可能為堆疊配置的緩衝區 <variable> 發生緩衝區滿溢 (於 <function>呼叫中): 長度 <size> 超過緩衝區大小 <max>

C6203

警告 C6203: 緩衝區 <variable> 發生緩衝區滿溢 (於 <function> 呼叫中): 長度 <size> 超過緩衝區大小

C6204

警告 C6204: <function> 的呼叫中可能有緩衝區滿溢: 使用了未經確認的參數 <variable>

C6209

警告 C6209: 使用 'sizeof<variable1>' 做為參數 <number> (於 <function> 呼叫中),其中 <variable2> 可能為寬字元的陣列。您是否想要使用字元計數而非位元組計數?

C6211

警告 C6211: 因例外狀況而造成遺漏的記憶體 <pointer>。請考慮使用區域 catch 區塊清除記憶體

C6214

警告 C6214: 語意不相同的整數型別之間發生轉型: HRESULT 轉型成布林型別

C6215

警告 C6215: 語意不相同的整數型別之間發生轉型: 布林型別轉型成 HRESULT

C6216

警告 C6216: 語意不相同的整數類資料型別之間發生編譯器插入的轉型: 布林型別轉型成 HRESULT

C6217

警告 C6217: 語意不相同的整數型別之間發生隱含轉型: 以 'not' 測試 HRESULT。考慮改用 SUCCEEDED 或 FAILED 巨集

C6219

警告 C6219: 語意不相同的整數型別之間發生隱含轉型: 將 HRESULT 比作 1 或 TRUE。考慮改用 SUCCEEDED 或 FAILED 巨集

C6220

警告 C6220: 語意不相同的整數型別之間發生隱含轉型: 將 HRESULT 比作 -1。請考慮改用 SUCCEEDED 或 FAILED 巨集

C6221

警告 C6221: 語意不相同的整數型別之間發生隱含轉型: 將 HRESULT 比作整數。請考慮改用 SUCCEEDED 或 FAILED 巨集

C6225

警告 C6225: 語意不相同的整數型別之間發生隱含轉型: 將 1 或 TRUE 指派給 HRESULT。請考慮改用 S_FALSE

C6226

警告 C6226: 語意不相同的整數型別之間發生隱含轉型: 將 -1 指派給 HRESULT。請考慮改用 E_FAIL

C6230

警告 C6230: 語意不相同的整數型別之間發生隱含轉型: 在布林內容中使用 HRESULT

C6235

警告 C6235: (<非零常數> || <運算式>) 永遠為非零的常數

C6236

警告 C6236: (<運算式> || <非零常數>) 永遠為非零的常數

C6237

警告 C6237: (<零> && <運算式>) 永遠為零。<運算式> 不會加以評估且可能有副作用

C6239

警告 C6239: (<非零常數> && <運算式>) 永遠評估為 <運算式> 的結果。您打算使用位元 AND 運算子嗎?

C6240

警告 C6240: (<運算式> && <非零常數>) 永遠評估為 <運算式> 的結果。您打算使用位元 AND 運算子嗎?

C6242

警告 C6242: 跳出此 try 區塊會強制區域回溯,而對效能帶來嚴重的負面影響

C6244

警告 C6244: <variable> 的區域宣告會隱藏先前的宣告,其位於第 <line> 行 (<file> 中)

C6246

警告 C6246: <variable> 的區域宣告會隱藏外部範圍中相同名稱的宣告。其他資訊: 請參閱先前的宣告,其位於 <location>。

C6248

警告 C6248: 將 SECURITY_DESCRIPTOR 的 DACL 設為 NULL,將會產生不受保護的物件

C6250

警告 C6250: 呼叫沒有 MEM_RELEASE 旗標的 <function> VirtualFree 可能會釋放記憶體,但不會釋放位址描述項 (VAD),因而導致位址空間遺漏

C6255

警告 C6255: _alloca 會藉由引發堆疊溢位例外狀況來表示錯誤。請考慮改用 _alloca_s

C6258

警告 C6258: 使用 TerminateThread 會無法正確清除執行緒

C6259

警告 C6259: 不可能執行到標記的程式碼: switch-expr 中的 (<運算式> & <常數>) 無法評估為 <case-label>

C6260

警告 C6260: sizeof * sizeof 幾乎都會得到錯誤的結果,您原先要使用的是字元計數還是位元組計數?

C6262

警告 C6262: 函式使用 <constant> 個位元組的堆疊: 超過 /analyze:stacksize<constant>。請考慮將部分資料移至堆積

C6263

警告 C6263: 迴圈中的 using _alloca: 這可能會迅速讓堆疊溢位

C6268

警告 C6268: 不正確的作業順序: (<TYPE1>)(<TYPE2>)x + y。(<TYPE1>)((<TYPE2>)x + y) 中可能遺漏括號

C6269

警告 C6269: 作業順序可能不正確: 已忽略取值

C6270

警告 C6270: 遺漏 <function> 的浮點引數: 加入對應轉換規範 <number> 的浮點引數

C6271

警告 C6271: 傳遞額外的引數至 <function>: 參數 <number> 不是由格式字串使用

C6272

警告 C6272: 傳遞非浮點做為引數 <number>,但 <function> 呼叫中需要浮點

C6273

警告 6273: 傳遞非整數做為參數 <number>,但 <function> 呼叫中需要整數: 如果傳遞指標值,則應使用 %p

C6274

警告 C6274: 傳遞非字元做為參數 <number>,但 <function> 呼叫中需要字元

C6276

警告 C6276: 語意不相同的字串型別之間發生轉型: char * 轉型成 wchar_t *。使用無效的字串可能導致未定義的行為

C6277

警告 C6277: <function> 呼叫中的 NULL 應用程式名稱含有不具引號的路徑: 如果路徑包含空格,則會導致安全性弱點

C6278

警告 C6278: <variable> 是以陣列 new [] 配置,但以純量 delete 刪除。將不會呼叫解構函式

C6279

警告 C6279: <variable> 是以純量 new 配置,但以陣列 delete [] 刪除

C6280

警告 C6280: <variable> 是以 <function> 配置,但以 <function> 刪除

C6281

警告 6281: 不正確的作業順序: 關係運算子的優先順序高於位元運算子

C6282

警告 C6282: 不正確的運算子: 在布林內容中指派常數。請考慮改用 '=='

C6283

警告 C6283: <variable> 是以陣列 new [] 配置,但以純量 delete 刪除

C6284

警告 C6284: 傳遞物件做為參數 '%d',但 <function> 呼叫中需要字串。

C6285

警告 C6285: (<非零常數> || <非零常數>) 永遠是非零的常數。您打算使用位元 AND 運算子嗎?

C6286

警告 C6286: (<非零常數> || <運算式>) 永遠是非零的常數。<運算式> 不會加以評估且可能有副作用

C6287

警告 C6287: 多餘的程式碼: 左邊和右邊的子運算式完全相同

C6288

警告 C6288: 不正確的運算子: 在互容的情況下使用 && 運算子,其結果永遠為零。您是否想要改用 ||?

C6289

警告 C6289: 不正確的運算子: 在互斥的情況下使用 || 運算子,其結果永遠為非零的常數。您是否想要改用 &&?

C6290

警告 C6290: 邏輯結果的位元運算: ! 的優先順序高於 &。請改用 && 或 (!(x & y))

C6291

警告 C6291: 邏輯結果的位元運算: ! 的優先順序高於 |。請改用 || 或 (!(x | y))

C6292

警告 C6292: 定義錯誤的 for 迴圈: 從最大值向上計數

C6293

警告 C6293: 定義錯誤的 for 迴圈: 從最小值向下計數

C6294

警告 C6294: 定義錯誤的 for 迴圈: 初始條件未滿足測試。未執行迴圈主體

C6295

警告 C6295: 定義錯誤的 for 迴圈: <variable> 的值永遠落在 "min" 到 "max" 的範圍內。迴圈無限執行

C6296

警告 C6296: 定義錯誤的 for 迴圈: 僅執行迴圈主體一次

C6297

警告 C6297: 算術溢位: 對 32 位元值進行移位運算,然後再轉型成 64 位元值。結果可能不是預期的值

C6298

警告 C6298: 使用唯讀字串 <pointer> 做為可寫入的字串引數: 如此將嘗試寫入靜態唯讀記憶體並造成無預警當機

C6299

警告 C6299: 明確比較位元欄位和布林型別,將產生未預期的結果

C6302

警告 C6299: 明確比較位元欄位和布林型別,將產生未預期的結果

C6303

警告 C6303: 格式字串不符合: 傳遞寬字元字串做為參數 <number>,但 <function> 的呼叫中需要字元字串

C6305

警告 C6305: sizeof 和 countof 的數量可能不相符

C6306

警告 C6306: <function> 呼叫不正確: 請考慮使用可接受 va_list 做為引數的 <function>

C6308

警告 C6308: 'realloc' 可能傳回 null 指標: 指派 null 指標給 <variable> (其做為引數傳遞至 'realloc'),將造成原始記憶體區塊遺漏

C6309

警告 C6309: 引數 <number> 為 null: 這並未遵守 <function> 的函式規格

C6310

警告 C6310: 例外狀況篩選條件中的不合法常數會造成未預期的行為

C6312

警告 C6312: 可能的無限迴圈: 在 try-except 的例外狀況篩選條件運算式中使用常數 EXCEPTION_CONTINUE_EXECUTION

C6313

警告 C6313: 不正確的運算子: 值為零的旗標無法使用位元 AND 測試。請使用相等測試檢查是否有值為零的旗標

C6314

警告 C6314: 不正確的作業順序: 位元 OR 的優先順序高於條件運算運算子。加入括號來釐清目的。

C6315

警告 C6315: 不正確的作業順序: 位元 AND 的優先順序高於位元 OR。加入括號來釐清目的。

C6316

警告 C6316: 不正確的運算子: 測試的運算式為常數且非零。請使用位元 AND 判斷位元是否已設定

C6317

警告 C6317: 不正確的運算子: 邏輯否定 (!) 與 1 補數 (~) 不能互換

C6318

警告 C6318: 定義錯誤的 __try/__except: 在例外狀況篩選條件運算式中使用常數 EXCEPTION_CONTINUE_SEARCH 或其他評估為零的常數。未執行例外處理常式區塊中的程式碼

C6319

警告 C6319: 在測試的運算式中使用逗號運算子會導致左邊的引數 (如果它沒有副作用) 被忽略

C6320

警告 C6320: 例外狀況篩選條件運算式是常數 EXCEPTION_EXECUTE_HANDLER。這可能會對不要進行處理的例外狀況做遮罩處理

C6322

警告 C6322: 空白 _except 區塊

C6323

警告 6323: 在布林型別上使用算術運算子

C6324

警告 C6324: <function1> 的使用可能不正確: 您是否想要使用 <function2>?

C6326

警告 C6326: 可能將常數和其他常數做比較

C6327

警告 C6327: 可能的緩衝區滿溢: SysAllocStringLen 複製 <number> 個字元 (從字串 <variable>),但未驗證要複製的字元數。程式碼可能會損毀

C6328

警告 C6328: 傳遞 <type> 做為參數 <number>,但 <function> 呼叫中需要 <type>

C6331

警告 C6331: 無效的參數: 不允許將 MEM_RELEASE 和 MEM_DECOMMIT 的組合傳遞至 <function>。這樣就會造成這個呼叫的失敗

C6332

警告 C6332: 無效的參數: 不允許將零做為 dwFreeType 參數傳遞至 <function>。這樣就會造成這個呼叫的失敗

C6333

警告 C6333: 無效的參數: 不允許傳遞 MEM_RELEASE 和非零的 dwSize 參數至 <function>。這樣就會造成這個呼叫的失敗

C6334

警告 C6334: 將 sizeof 運算子套用至已有一個運算子的運算式,可能會產生未預期的結果

C6335

警告 C6335: 遺漏處理序資訊控制代碼 <handlename>

C6336

警告 C6336: 算術運算子的優先順序高於問號運算子,請使用括號釐清目的

C6381

警告 C6381: 關閉 API <function> 需要有效的 dwReason 或 lpMessage

C6383

警告 C6383: 因將元素計數轉換成位元組計數而導致緩衝區滿溢: 參數 <number> 於 <function> 呼叫中時必須是元素計數

C6384

警告 C6384: 將指標的大小除以其他值

C6385

警告 C6385: 無效的資料: 存取 <buffer name>,可讀取的大小為 <size1> 個位元組,但可能讀取 <size2> 個位元組: 行: x, y

C6386

警告 C6386: 緩衝區滿溢: 存取 <buffer name>,可寫入的大小為 <size1> 個位元組,但可能寫入 <size2> 個位元組: 行: x, y

C6387

警告 C6387: <argument> 會是 <value>: 這並未遵守函式 <function name> 的規格: 行: x, y

C6388

警告 C6388: <argument> 不可以是 <value>: 這並未遵守函式 <function name> 的規格: 行: x, y

C6400

警告 C6400: 使用 <function name> 執行與常數字串 <string name> 的不區分大小寫的比較。在非英文地區設定中產生未預期的結果

C6401

警告 C6401: 在預設地區設定中使用 <function name> 執行與常數字串 < string name> 的不區分大小寫的比較。在非英文地區設定中產生未預期的結果

C6500

警告 C6500: 無效的附註: <name> 屬性的值無效

C6501

警告 C6501: 附註衝突: <name> 屬性與之前指定的屬性發生衝突

C6503

警告 C6503: 附註衝突: 參考不可標記為 Null=Yes 或 Null=Maybe

C6504

警告 C6504: 無效的附註: 屬性只能在指標、成員指標、陣列或參考型別的值上使用

C6505

警告 C6505: 無效的附註: MustCheck 屬性不可以在 void 型別的值上使用

C6506

警告 C6506: 無效的附註: <name> 屬性只能在指標或陣列型別的值上使用

C6507

警告 C6507: 附註衝突: 在後置條件中 Deref=0 的 Null 屬性必須是先前條件之 Null 屬性的子集

C6508

警告 C6508: 無效的附註: 常數值上不允許寫入權限

C6509

警告 C6509: 無效的附註: 'return' 無法從先前的條件參考

C6510

警告 C6510: 無效的附註: NullTerminated 屬性只能在指標或陣列型別的值上使用

C6511

警告 C6511: 無效的附註: MustCheck 屬性必須是 Yes 或 No

C6512

警告 C6512: 無效的附註: 如果 Valid 屬性是 No,則 Null 屬性必須是 Maybe

C6513

警告 C6513: 無效的附註: ElementSize 需要額外的大小屬性

C6514

警告 C6514: 無效的附註: <name> 屬性的值超過陣列大小

C6515

警告 C6515: 無效的附註: <name> 屬性只能在指標型別的值上使用

C6516

警告 C6516: 無效的附註: 沒有為 <name> 屬性 (Attribute) 指定任何屬性 (Property)

C6517

警告 C6517: 附註衝突: ValidElementsConst 和 ValidBytesConst 不可以在不可讀取的緩衝區上指定

C6518

警告 C6518: 無效的附註: WriteableElementsConst 和 WriteableBytesConst 不可以在不可寫入的緩衝區上指定

C6521

警告 C6521: 無效的大小規格: * 運算子只能套用至指標型別

C6522

警告 C6522: 無效的大小規格: 運算式必須是整數類資料型別

C6523

警告 C6523: 無效的大小規格: 找不到參數 <name>

C6525

警告 C6525: 無效的大小規格: 屬性值可能無效

C6526

警告 C6526: 無效的大小規格: 運算式必須是陣列或指標型別

C6530

警告 6530: 無法辨認的格式字串樣式 <name>

C6535

警告 C6535: 緩衝區不可為大小 <n>,也不可大於 max(size_t)

請參閱

概念

撰寫安全程式碼的方針

其他資源

偵測和修正 C/C++ 程式碼的缺失