Merge pull request #12828 from yang-g/delete_stress_clients

Properly clean up stress test clients
diff --git a/test/cpp/interop/stress_test.cc b/test/cpp/interop/stress_test.cc
index 9cc5a81..c6d3600 100644
--- a/test/cpp/interop/stress_test.cc
+++ b/test/cpp/interop/stress_test.cc
@@ -257,6 +257,7 @@
   gpr_log(GPR_INFO, "Starting test(s)..");
 
   std::vector<std::thread> test_threads;
+  std::vector<std::unique_ptr<StressTestInteropClient>> clients;
 
   // Create and start the test threads.
   // Note that:
@@ -282,9 +283,9 @@
       // Create stub(s) for each channel
       for (int stub_idx = 0; stub_idx < FLAGS_num_stubs_per_channel;
            stub_idx++) {
-        StressTestInteropClient* client = new StressTestInteropClient(
+        clients.emplace_back(new StressTestInteropClient(
             ++thread_idx, *it, channel, test_selector, FLAGS_test_duration_secs,
-            FLAGS_sleep_duration_ms, FLAGS_do_not_abort_on_transient_failures);
+            FLAGS_sleep_duration_ms, FLAGS_do_not_abort_on_transient_failures));
 
         bool is_already_created = false;
         // QpsGauge name
@@ -293,7 +294,7 @@
                       server_idx, channel_idx, stub_idx);
 
         test_threads.emplace_back(std::thread(
-            &StressTestInteropClient::MainLoop, client,
+            &StressTestInteropClient::MainLoop, clients.back().get(),
             metrics_service.CreateQpsGauge(buffer, &is_already_created)));
 
         // The QpsGauge should not have been already created