エラー: use-after-poison
Address Sanitizer エラー: 侵害されたメモリの使用
開発者は、デバッグをカスタマイズするために手動でメモリを侵害できます。
例
// example1.cpp
// use-after-poison error
#include <stdlib.h>
extern "C" void __asan_poison_memory_region(void *, size_t);
int main(int argc, char **argv) {
char *x = new char[16];
x[10] = 0;
__asan_poison_memory_region(x, 16);
int res = x[argc * 10]; // Boom!
delete [] x;
return res;
}
この例をビルドしてテストするには、Visual Studio 2019 バージョン 16.9 以降の開発者コマンド プロンプトで次のコマンドを実行します。
cl example1.cpp /fsanitize=address /Zi
devenv /debugexe example1.exe
結果のエラー
関連項目
AddressSanitizer の概要
AddressSanitizer の既知の問題
AddressSanitizer のビルドと言語リファレンス
AddressSanitizer ランタイム リファレンス
AddressSanitizer シャドウ バイト
AddressSanitizer クラウドまたは分散テスト
AddressSanitizer デバッガーの統合
AddressSanitizer エラーの例