1. 程式人生 > 實用技巧 >Visual Studio2019在編譯時的警告C6385、C6386從..中讀取的資料無效: 可讀大小為..個位元組,但可能讀取了..個位元組 以及 寫入到..時緩衝區溢位: 可寫大小為..個位元組,但可能寫入了..個位元組

Visual Studio2019在編譯時的警告C6385、C6386從..中讀取的資料無效: 可讀大小為..個位元組,但可能讀取了..個位元組 以及 寫入到..時緩衝區溢位: 可寫大小為..個位元組,但可能寫入了..個位元組

在Visual Studio2019中,在進行編譯時出現了這樣的警告:

1. C6385:從..中讀取的資料無效: 可讀大小為..個位元組,但可能讀取了..個位元組;

2. C6386:從..中寫入到..時緩衝區溢位: 可寫大小為..個位元組,但可能寫入了..個位元組

微軟在預設情況下強制對C和C++程式碼強制使用SAL分析,除了以上兩種警告外,還有其他的一些誤報(false positive)。

解決方法:

#pragmawarning(push)是儲存當前的編譯器警告狀態;
#pragmawarning(pop)是恢復原先的警告狀態。
例如:

#pragma warning(push)
#pragma
warning(disable:6385) #pragma warning(disable:6386) /*Source Code*/ #pragma warning(pop)

這樣在編譯Source Code部分的程式碼時,6385、6386警告將不會出現。

也可以不加#pragmawarning(push)和#pragmawarning(pop),這樣#pragma warning(disable:6385)#pragma warning(disable:6386)將在全域性生效。