微軟更新Visual Studio 2022強化C++開發體驗,除了讓開發者可以簡單查看類別、結構(Struct)、聯合(Union)、基礎型別和列舉(Enum)的大小和對齊方式之外,同時,Visual Studio 2022還能視覺化C++類別、結構和聯合的記憶體布局,方便開發者管理記憶體使用和最佳化程式執行效能。

C++開發者現在可以更有效率地檢視資料結構的記憶體占用量,以及記憶體的對齊方式。該新功能讓開發者只要將滑鼠懸停在相關的識別碼(Identifier),就能查看快速資訊工具提示,即時檢查類別、結構和聯合的大小和對齊狀況,而這將有助於開發者理解複雜程式中的記憶體布局。

在C++中,結構或是類別的大小,主要取決於資料成員的大小,以及為了記憶體對齊所添加的填充,而加入虛擬函式等因素也可能影響其大小。微軟舉例,一個名為SimpleClass的類別,包含整數x和ClassWithVirtualFunction類別物件,具有虛擬函式的類別隱藏一個指向虛擬方法vtable的虛擬指標vptr,這個vptr對於SimpleClass產生了較高的對齊要求,導致占用記憶體空間比預期的8位元組還多,實際上為16位元組(下圖)。

官方解釋,這類大小增加是因為第一個類別中的vptr需要8位元組對齊,進而導致編譯器對第二個類別進行填充。虛擬函式影響類別記憶體占用,在過去是難以觀察的細節,而Visual Studio 2022更新功能,使開發者不需要編寫額外的程式碼計算,只要透過簡單的滑鼠操作,即可查看隱藏的記憶體占用資訊。而清晰了解記憶體占用量和對齊方式,有助於開發者最佳化程式的效能和記憶體使用。

此外,Visual Studio 2022還加入了記憶體布局檢視圖,這項功能呈現類別、結構和聯合的記憶體排列方式,對於最佳化記憶體布局工作特別有用。開發者現在可以更直覺地查看類別中所有資料成員的填充、偏移和大小。

開發者只要將滑鼠游標停留在類別名稱上,無論是宣告還是定義,都會出現一個快速資訊工具提示,除了大小和對齊,也會出現記憶體布局連結,點擊連結開發者即可存取互動式記憶體布局檢視圖,開發者可方便地觀看單個資料成員具體偏移和大小。

而且該功能還提供COM類型的v-table記憶體布局檢視圖,協助開發者理解COM物件的基本結構和組織。微軟提到,這將有助於C++開發者提高程式效率和理解度,更容易管理記憶體和處理資料結構。

熱門新聞

Advertisement