【C++】Visual Studio 2026 のC++新機能 — Segment Heap と C++23/26

波形グラフィックで最適化機能を表したVisual Studio 2026のアイキャッチ画像

Visual Studio 2026のC++向け新機能をまとめます。Segment Heapのデフォルト有効化、MSVC v14.51のC++23/26対応、NuGet PackageReferenceの実験的サポートを確認できます。

この記事の情報は2026年9月15日時点で再確認したものです。
本記事は 18.6 系を前提に書いています。その後も更新が続いており、2026年9月15日時点の最新 Stable は 18.10.0(2026年9月8日リリース)です。18.7.0 は2026年6月9日にリリース済みで、本記事で「18.7 Preview」としている NuGet PackageReference のサポートは 18.7 以降で利用できます(位置づけは引き続き Experimental)。

目次

この記事が解決する悩み

  • Visual Studio 2026に上げるべきか迷っている
  • C++側のビルド設定がどこまで変わるのか知りたい

対象読者: WindowsでC++を書いている人
前提知識: Visual Studioで開発した経験があること

結論

Visual Studio 2026(v18.x)はC++開発者にとって大きなアップデートです。注目すべき変更点は3つです。

  • Segment Heapのデフォルト有効化:新規プロジェクトで自動適用、既存も数クリックで移行
  • MSVC v14.51 + C++23/26対応の強化:コンフォーマンス向上とSample PGOの手軽化
  • NuGet PackageReferenceの実験的サポート:.vcxprojでモダンな依存関係管理が可能に
// 新しいC++プロジェクトを作成するだけでSegment Heapが有効に
// 確認はプロジェクトプロパティ → Manifest Tool → Input and Output
// 既存プロジェクトも数クリックで移行可能

// CMakeの場合も簡単
// CMakePresets.json に一行追加するだけ
// "CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "SegmentHeap.cmake"

Visual Studio 2026のC++向け変更点まとめ

Visual Studio 2026は18.0〜18.6でC++向けの改善を多数投入しています。18.6 以降ならほぼすべて使えます。

1. Segment Heapのデフォルト有効化(18.6)

Segment HeapはWindows 10以降の新しいヒープ実装です。NT Heapと比べて次のメリットがあります。

  • 割り当てスループットの向上(特にマルチスレッド環境)
  • メモリフラグメントの大幅低減
  • ヒープベースの脆弱性に対する保護強化
  • コア間のスケーラビリティ改善

MicrosoftのC++チームブログによれば、ゲームエンジンやパーサーなど、頻繁にメモリを確保・解放するアプリで特に効くそうです。

新規プロジェクトの場合

18.6以降で作成したC++プロジェクトは、デフォルトでSegment Heapが有効です。何もする必要はありません。

既存プロジェクトで有効化する方法

MSBuildベースのプロジェクトは、プロジェクトプロパティから設定します。

プロジェクト → プロパティ → Manifest Tool → Input and Output
  → Enable Segment Heap: Yes (/segmentheap)

CMakeプロジェクトには SegmentHeap.cmake ヘルパーが用意されています。

// CMakePresets.json
{
  "version": 6,
  "configurePresets": [
    {
      "name": "default",
      "generator": "Visual Studio 17 2026",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "SegmentHeap.cmake"
      }
    }
  ]
}

特定のターゲットだけ有効にしたい場合は、環境変数で制御できます。

# 特定ターゲットのみ許可
export VS_SEGMENT_HEAP_ALLOWLIST="target1;target2"
# 特定ターゲットを除外
export VS_SEGMENT_HEAP_EXCLUDE="target3"

有効化の確認方法

最終的な実行ファイルのマニフェストを見れば、設定が効いているか確認できます。

# 開発者コマンドプロンプトから
mt -inputresource:YourApp.exe;#1 -out:manifest.xml
# manifest.xml に <segmentHeap> が含まれていればOK

2. MSVC v14.51とC++23/26対応の強化

MSVC Build Tools v14.51がVisual Studio 2026に同梱されています。ランタイム性能とC++23コンフォーマンスが向上しました。

#include <print>
#include <expected>
#include <stacktrace>

// C++23 std::print
std::println("Hello, {}! 答えは{}です", "World", 42);

// C++23 std::expected
std::expected<int, std::string> divide(int a, int b) {
    if (b == 0) return std::unexpected("0で割れません");
    return a / b;
}

auto result = divide(10, 2);
if (result) {
    std::println("結果: {}", *result);
} else {
    std::println("エラー: {}", result.error());
}

// std::stacktrace
void func() {
    auto trace = std::stacktrace::current();
    std::println("スタックフレーム数: {}", trace.size());
}

3. Sample PGO(Profile Guided Optimization)

従来のPGOはインストルメント化したバイナリの実行が必要でした。Sample PGOは稼働中のアプリをサンプリングするので、本番のトラフィックで最適化できます。

プロジェクト → プロパティ → リンカー → 最適化
  → プロファイルガイド付き最適化: サンプリング(/LTCG:PGD)

4. NuGet PackageReferenceの実験的サポート(18.7 以降・Experimental)

C++のネイティブプロジェクト(.vcxproj)でもNuGetのPackageReference形式が使えます。プロジェクトファイルに直接依存を書けて、推移解決も自動です。

<!-- Directory.Build.props でグローバルに有効化 -->
<PropertyGroup>
  <EnableNativePackageReferenceSupport>true</EnableNativePackageReferenceSupport>
</PropertyGroup>

<!-- .vcxproj でのパッケージ参照 -->
<ItemGroup>
  <PackageReference Include="Microsoft.Windows.SDK.CPP" Version="10.0.26100.0" />
  <PackageReference Include="Boost.Regex" Version="1.84.0" />
</ItemGroup>

ただし注意点もあります。

  • C++/CLIプロジェクトのうち、レガシーな.NET Frameworkをターゲットにしているものは未対応
  • C++プロジェクトがC++/CLIプロジェクトやC#プロジェクトを参照している場合も未対応(調査中)
  • MicrosoftはC++ライブラリの取得には引き続きvcpkgを推奨。PackageReferenceはNuGet経由のSDK配布など補完的な用途が想定されています

5. AI機能の統合とIDEの改善

Copilot関連も大幅に強化されています。

  • Copilot Actions: 「モダナイズして」「エラーハンドリングを追加して」といった指示を自然言語で出せる
  • Profiler Agent: AIがパフォーマンスのボトルネックを自動診断
  • Debugger Agent: 実行時の挙動からバグを解析、修正案を提示
  • Fluent UIベースの新デザイン: テーマカラー11種類、設定画面の刷新
  • IDEとビルドツールの分離: 本体とビルドツールを別々に更新できるように

実践:Visual Studio 2026にアップデートする手順

手順1:Visual Studio 2026のインストール

VS2026は2022とサイドバイサイドで入るので、既存プロジェクトに影響せず試せます。

1. https://visualstudio.microsoft.com/ からダウンロード
2. インストーラーを実行
3. ワークロードで「C++によるデスクトップ開発」を選択
4. インストール完了後、VS2026を起動

手順2:既存プロジェクトのSegment Heap有効化

プロジェクト → プロパティ → Manifest Tool → Input and Output
  → Enable Segment Heap: Yes
  → 適用 → OK

ビルドしてエラーが出なければ成功です。変化を見たいときは、前後のアロケーションプロファイルを比べてみてください。

手順3:新しいC++23/26機能の確認

プロジェクト → プロパティ → C/C++ → 言語
  → C++言語標準: /std:c++latest または /std:c++23 を選択

実測メモ: 手元の Visual Studio 2026 Community(18.4.3)に同梱されていた MSVC は 14.50.35717 でした。上の表で v14.51 としているのはリリースノート上の記載で、実際に同梱されるバージョンは環境によって少し前後します。手元のバージョンは VC\Tools\MSVC フォルダか、開発者コマンドプロンプトで cl を実行すると確認できます。

まとめ

VS2026のC++関連アップデートを一覧にまとめました。

機能 バージョン ステータス 影響
Segment Heap 18.6 Stable(新規はデフォルトON) メモリ性能・セキュリティ↑
MSVC v14.51 18.0〜 Stable C++23/26対応↑
Sample PGO 18.3 Stable ランタイム最適化
NuGet PackageReference 18.7 Experimental 依存関係管理
Copilot Actions 18.0〜 Stable AI支援
IDE/ビルドツール分離 18.0 Stable 更新管理

新規プロジェクトなら自動適用、既存プロジェクトもプロパティ1つで有効化できますよ。

【広告】【Value AI Writer byGMO】高品質なSEO記事をAIで自動生成。

検証環境

OS Windows 11 (build 10.0.26200)
CPU AMD Ryzen 9 PRO 8945HS w/ Radeon 780M Graphics
メモリ 28GB
言語/ツール Visual Studio 2026 Community 18.4.3 / MSVC 14.50.35717(cl /std:c++latest)
使用コマンド cl /nologo /std:c++latest /EHsc hello.cpp
測定日 2026-09-17

上記の環境で実際に実行して確認した結果です。環境が異なる場合は挙動が変わることがあります。

MSVC で C++23/26 の機能テストマクロを含むコードを実際にコンイル・実行した結果
MSVC で C++23/26 の機能テストマクロを含むコードを実際にコンイル・実行した結果

参考

本文の記述は以下の一次情報を確認して書いています。

あわせて読みたい

【広告】このサイトはConoHa WINGで運営しています。安定した高速サーバーで快適にブログを書けています。いつもありがとう!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次