Enviar búsqueda
Cargar
Visual C++コード分析を支えるSAL
•
2 recomendaciones
•
4,187 vistas
egtra
Seguir
Boost.勉強会 #21 札幌の発表時のスライドです。Visual C++のコード分析機能で使われるSALの導入的な説明です。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 33
Descargar ahora
Descargar para leer sin conexión
Recomendados
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
Yoshifumi Kawai
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
Recomendados
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
Kohsuke Yuasa
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
A quick tour of the Cysharp OSS
A quick tour of the Cysharp OSS
Yoshifumi Kawai
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
Genya Murakami
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
ELFの動的リンク
ELFの動的リンク
7shi
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
C#とILとネイティブと
C#とILとネイティブと
信之 岩永
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
C++の黒魔術
C++の黒魔術
Daichi OBINATA
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
TetsuroMatsumura
PGI CUDA FortranとGPU最適化ライブラリの一連携法
PGI CUDA FortranとGPU最適化ライブラリの一連携法
智啓 出川
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
m ishizaki
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
akira6592
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
信之 岩永
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
Más contenido relacionado
La actualidad más candente
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
ELFの動的リンク
ELFの動的リンク
7shi
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
C#とILとネイティブと
C#とILとネイティブと
信之 岩永
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
KageShiron
C++の黒魔術
C++の黒魔術
Daichi OBINATA
C++ マルチスレッド 入門
C++ マルチスレッド 入門
京大 マイコンクラブ
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
Kazuyuki TAKASE
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
TetsuroMatsumura
PGI CUDA FortranとGPU最適化ライブラリの一連携法
PGI CUDA FortranとGPU最適化ライブラリの一連携法
智啓 出川
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
m ishizaki
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
akira6592
Assembly Definition あれやこれ
Assembly Definition あれやこれ
NakanoYosuke1
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
信之 岩永
La actualidad más candente
(20)
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
ELFの動的リンク
ELFの動的リンク
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
オブジェクト指向できていますか?
オブジェクト指向できていますか?
C#とILとネイティブと
C#とILとネイティブと
.NET Core 3.0時代のメモリ管理
.NET Core 3.0時代のメモリ管理
C++の黒魔術
C++の黒魔術
C++ マルチスレッド 入門
C++ マルチスレッド 入門
関数型プログラミングのデザインパターンひとめぐり
関数型プログラミングのデザインパターンひとめぐり
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
C++20 モジュールの概要 / Introduction to C++ modules (part 1)
PGI CUDA FortranとGPU最適化ライブラリの一連携法
PGI CUDA FortranとGPU最適化ライブラリの一連携法
Visual Studio Code で C# でのアプリ開発
Visual Studio Code で C# でのアプリ開発
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
Assembly Definition あれやこれ
Assembly Definition あれやこれ
C#/.NETがやっていること 第二版
C#/.NETがやっていること 第二版
Destacado
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
egtra
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SML
Takatoshi Kondo
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
Hiro H.
C++1z draft
C++1z draft
Akira Takahashi
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
hiyohiyo
Destacado
(7)
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SML
関数の最小値を求めることから機械学習へ
関数の最小値を求めることから機械学習へ
C++1z draft
C++1z draft
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
C++でNVMeと(*´Д`)ハァハァ 戯れていたら一年経ってた。
Similar a Visual C++コード分析を支えるSAL
Objc lambda
Objc lambda
matuura_core
N3495 inplace realloc
N3495 inplace realloc
Takatoshi Kondo
C++0x総復習
C++0x総復習
道化師 堂華
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
Misrac20150523
Misrac20150523
Kiyoshi Ogawa
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
Masanori Masui
知って得するC#
知って得するC#
Shota Baba
C++ lecture-0
C++ lecture-0
sunaemon
Emcpp item31
Emcpp item31
mitsutaka_takeda
4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
mao999
Altanative macro
Altanative macro
Motohiro KOSAKI
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
信之 岩永
C#勉強会
C#勉強会
hakugakucafe
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
digitalghost
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
Similar a Visual C++コード分析を支えるSAL
(20)
Objc lambda
Objc lambda
N3495 inplace realloc
N3495 inplace realloc
C++0x総復習
C++0x総復習
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
Misrac20150523
Misrac20150523
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
(ゲームじゃない方の)switchで遊びたい話
(ゲームじゃない方の)switchで遊びたい話
知って得するC#
知って得するC#
C++ lecture-0
C++ lecture-0
Emcpp item31
Emcpp item31
4章 Linuxカーネル - 割り込み・例外 4
4章 Linuxカーネル - 割り込み・例外 4
Altanative macro
Altanative macro
C# 9.0 / .NET 5.0
C# 9.0 / .NET 5.0
C#勉強会
C#勉強会
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
Más de egtra
Casablanca
Casablanca
egtra
Firefox拡張機能を始める
Firefox拡張機能を始める
egtra
ATLに見る魔術
ATLに見る魔術
egtra
再変換 (K2Editor)
再変換 (K2Editor)
egtra
C++11概要 ライブラリ編
C++11概要 ライブラリ編
egtra
char32_tとXpressiveと
char32_tとXpressiveと
egtra
Boost.Range入門
Boost.Range入門
egtra
Boost.Graph入門
Boost.Graph入門
egtra
Más de egtra
(8)
Casablanca
Casablanca
Firefox拡張機能を始める
Firefox拡張機能を始める
ATLに見る魔術
ATLに見る魔術
再変換 (K2Editor)
再変換 (K2Editor)
C++11概要 ライブラリ編
C++11概要 ライブラリ編
char32_tとXpressiveと
char32_tとXpressiveと
Boost.Range入門
Boost.Range入門
Boost.Graph入門
Boost.Graph入門
Último
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Último
(10)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Visual C++コード分析を支えるSAL
1.
Visual C++コード分析を 支えるSAL H.28/11/05 Egtra Boost.勉強会 #21
2.
自分 • Egtra – Twitter:
@egtra – http://dev.activebasic.com/egtra/ • 仕事: 主にVisual C++ 2005/2015 (Windows) – 最近はそれ以外も
3.
cl.exe /analyze • Visual
C++には 静的コード解析の機能がある。 – Visual C++ 2005から • コンパイラオプション/analyze
4.
SAL • ソースコードに注釈を付ける専用言語。 • /analyzeに対する情報提供。 •
例: void f(_In_ int x); https://msdn.microsoft.com/ja-jp/library/hh916383.aspx
5.
使用箇所 • 以下で使われている。 – VC++の標準Cライブラリのヘッダー –
Windows SDKのヘッダー • 自分のコードにも、SAL注釈を付ければ、 さらに効果が得られる。 – でもちょっと大変かも。
6.
例 int main() { int
x; x += 100; }
7.
例 int main() { int
x; x += 100; } warning C6001: 初期化されていないメモ リ 'x' を使用しています。
8.
目次 • 読むか書くか • nullptrの可否 •
要素数
9.
読むか書くか 仮引数の入出力の方向
10.
関数をまたいで検知したい • このコードは警告出てほしい。 void f1(int*
p) { *p += 100; // 読んで書く } int main() { int x; f1(&x); // 未初期化を渡している! }
11.
関数をまたいで検知したい • 一方、このコードは警告出なくていい。 void f2(int*
p) { *p = 100; // 代入! } int main() { int x; f1(&x); // 未初期化の変数だけどOK }
12.
アノテーション(注釈) • 仮引数に追加情報。 void f1(_Inout_
int* p) { *p += 100; } int main() { int x; f1(&x); } ← warning C6001: 初期化 されていないメモリ 'x' を 使用しています。
13.
アノテーション(注釈) • 元の値を読まないことの指定。 void f2(_Out_
int* p) { *p = 100; // 代入! } int main() { int x; f1(&x); }
14.
データの入出力方向 • _Inout_と_Out_があるなら、 もちろん_In_もある。 void f3(_In_
const int* p) { std::cout << *p << std::endl; } int main() { int x; f3(&x); } // warning C6001 初期化されていないメモリ 'x' ……
15.
ここまでのまとめ 呼び出し元で 呼び出し先(関数内)で _In_ 入力
要初期化 読み取りのみ _Inout_ 入出力 要初期化 読み書きする _Out_ 出力 初期化不要 書き込み(※) • 3つともポインタ・参照に適用可 • _In_のみ、値渡しに適用可能 – 例: void f(_In_ int x);
16.
_Out_の意味 ※ _Out_は書き込み限定ではない 元の値を読み取らないだけ void my_rand(_Out_
int* p) { do { *p = rand(); } while (*p >= 10000); // OK }
17.
ダメな例 前ページのコード、最初こう書いた。 void my_rand(_Out_ int*
p) { while (*p >= 10000) { // C6001 *p = rand(); } }
18.
nullptrの可否
19.
nullptrを渡して良いかの指定 • nullptrを渡しても良いならopt nullptr不許可 nullptr許可 _In_
_In_opt_ _Inout_ _Inout_opt_ _Out_ _Out_opt_
20.
呼び出す側の例 void f1(_In_ void*
p); void f2(_In_opt_ void* p); int main() { f1(malloc(1)); // 警告 f2(malloc(1)); // OK } warning C6387: '_Param_(1)' は '0' である可能性があります: この 動作は、関数 'f1' の指定に従っていません。
21.
注意その1 • あくまでコンパイル時警告の情報提供 • f2はこうでもいい void
f2(_In_opt_ void* p) { if (p == nullptr) { std::terminate(); } }
22.
注意その2 • あくまでコンパイル時警告の情報提供 • _In_/_Inout_/_Out_仮引数でnullptr チェックしてもいい void
f1(_In_ void* p) { if (p == nullptr) { ……
23.
呼び出される側の例 (1) • _In_/_Inout_/_Out_ならnullptr チェックせず読み書きして良い void
print1(_In_ int* p) { std::cout << *p << std::endl; } (警告出ない)
24.
呼び出される側の例 (2) • _In_opt_/_Inout_opt_/_Out_opt_は nullptrかもしれないと想定される。 void
print2(_In_opt_ int* p) { std::cout << *p << std::endl; } warning C6011: NULL ポインター 'p' を逆参照 しています。
25.
要素数 配列とヌル終端文字列
26.
配列の注釈 • もちろんoptバージョンもある – 例:
_In_reads_opt_(n) _In_reads_(n) 入力 _Inout_updates_(n) 入出力 _Out_writes_(n) 出力 • 配列へのポインタの仮引数では、 要素数を指定する。
27.
例 その1 UINT WINAPI
SendInput( _In_ UINT cInputs, _In_reads_(cInputs) LPINPUT pInputs, _In_ int cbSize); 仮引数pInputsは、 要素数cInputs個の配列を指すポインタ。
28.
例 その2 int WINAPI
GetWindowTextW( _In_ HWND hwnd, _Out_writes_(nMaxCount) LPWSTR lpString, _In_ int nMaxCount); 仮引数lpStringは、 最大で要素数nMaxCount個書き込まれる。
29.
文字列 その1 <stdio.h>より int __cdecl
fputs( _In_z_ char const* _Buffer, _Inout_ FILE* _Stream );
30.
文字列 その2 BOOL WINAPI
DeleteFileA( _In_ LPCSTR lpFileName); • lpFileNameはヌル終端文字列扱い。 • LPCSTRなど一部の型は、 typedefに注釈が付与されている。
31.
終わりに
32.
終わりに • ここまでの例では こういうのを検知できる(かも)。 – 未初期化変数からの読み取り –
nullptrへのアクセス – 配列の要素数を超えたアクセス • 注意: /analyzeの機能はまだあるよ。
33.
This work is
licensed under a Creative Commons Attribution- ShareAlike 4.0 International License.
Descargar ahora