diff --git a/README.md b/README.md index 41cada9553..7947229499 100644 --- a/README.md +++ b/README.md @@ -1243,6 +1243,7 @@ int main(int argc, char** argv) { benchmark::RegisterBenchmark(test_input.name(), BM_test, test_input); benchmark::Initialize(&argc, argv); benchmark::RunSpecifiedBenchmarks(); + benchmark::Shutdown(); } ``` diff --git a/include/benchmark/benchmark.h b/include/benchmark/benchmark.h index 5b53debd25..290c5c5011 100644 --- a/include/benchmark/benchmark.h +++ b/include/benchmark/benchmark.h @@ -42,6 +42,7 @@ BENCHMARK(BM_StringCopy); int main(int argc, char** argv) { benchmark::Initialize(&argc, argv); benchmark::RunSpecifiedBenchmarks(); + benchmark::Shutdown(); return 0; } @@ -274,6 +275,7 @@ class BenchmarkReporter; class MemoryManager; void Initialize(int* argc, char** argv); +void Shutdown(); // Report to stdout all arguments in 'argv' as unrecognized except the first. // Returns true there is at least on unrecognized argument (i.e. 'argc' > 1). @@ -1314,6 +1316,7 @@ class Fixture : public internal::Benchmark { ::benchmark::Initialize(&argc, argv); \ if (::benchmark::ReportUnrecognizedArguments(argc, argv)) return 1; \ ::benchmark::RunSpecifiedBenchmarks(); \ + ::benchmark::Shutdown(); \ return 0; \ } \ int main(int, char**) diff --git a/src/benchmark.cc b/src/benchmark.cc index 443ffbf9fa..c4392bfdcf 100644 --- a/src/benchmark.cc +++ b/src/benchmark.cc @@ -548,6 +548,10 @@ void Initialize(int* argc, char** argv) { internal::LogLevel() = FLAGS_v; } +void Shutdown() { + delete internal::global_context; +} + bool ReportUnrecognizedArguments(int argc, char** argv) { for (int i = 1; i < argc; ++i) { fprintf(stderr, "%s: error: unrecognized command-line flag: %s\n", argv[0], diff --git a/test/benchmark_gtest.cc b/test/benchmark_gtest.cc index cbbf48b3b4..14a885ba46 100644 --- a/test/benchmark_gtest.cc +++ b/test/benchmark_gtest.cc @@ -143,6 +143,7 @@ TEST(AddCustomContext, Simple) { testing::UnorderedElementsAre(testing::Pair("foo", "bar"), testing::Pair("baz", "qux"))); + delete global_context; global_context = nullptr; } @@ -155,6 +156,7 @@ TEST(AddCustomContext, DuplicateKey) { EXPECT_THAT(*global_context, testing::UnorderedElementsAre(testing::Pair("foo", "bar"))); + delete global_context; global_context = nullptr; }