tests: avoid placement new in test files

The prior commit 842113b5349cd8dcb1bdbcc8d2845449ffe8317f replaced
placement new calls with std::start_lifetime_as in production code,
but the same pattern remained in a number of test files.  GCC-16
-Wuninitialized handling of placement new caused these tests to fail
at runtime with SIGSEGV, assertion failures, or timeouts.

Convert all remaining placement new calls in the test files to
std::start_lifetime_as with the same polyfill for GCC-15 compatibility.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Id2a87647a232b4332fbfead8cf3e49c8995993cc
diff --git a/platform-mc/test/event_manager_test.cpp b/platform-mc/test/event_manager_test.cpp
index 790c3c3..e4c6cc0 100644
--- a/platform-mc/test/event_manager_test.cpp
+++ b/platform-mc/test/event_manager_test.cpp
@@ -1,3 +1,4 @@
+#include "common/start_lifetime_as.hpp"
 #include "common/types.hpp"
 #include "mock_event_manager.hpp"
 #include "mock_terminus_manager.hpp"
@@ -226,7 +227,7 @@
             0x0 // dataTransferHandleTimeout
         };
     auto rc = terminusManager.enqueueResponse(
-        new (getPDRRepositoryInfoResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPDRRepositoryInfoResp.data()),
         sizeof(getPDRRepositoryInfoResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -300,8 +301,9 @@
         0,                             // fatalHigh
         0                              // fatalLow
     };
-    rc = terminusManager.enqueueResponse(new (getPdrResp.data()) pldm_msg,
-                                         sizeof(getPdrResp));
+    rc = terminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getPdrResp.data()),
+        sizeof(getPdrResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     const size_t getPdrAuxNameRespLen = 39;
@@ -336,7 +338,8 @@
             0x00  // Entity Name "S0"
         };
     rc = terminusManager.enqueueResponse(
-        new (getPdrAuxNameResp.data()) pldm_msg, sizeof(getPdrAuxNameResp));
+        std::start_lifetime_as<pldm_msg>(getPdrAuxNameResp.data()),
+        sizeof(getPdrAuxNameResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     // queue eventMessageBufferSize response(bufferSize=32)
@@ -344,7 +347,7 @@
     std::array<uint8_t, sizeof(pldm_msg_hdr) + eventMessageBufferSizeRespLen>
         eventMessageBufferSizeResp{0x0, 0x02, 0x0d, PLDM_SUCCESS, 32, 0};
     rc = terminusManager.enqueueResponse(
-        new (eventMessageBufferSizeResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(eventMessageBufferSizeResp.data()),
         sizeof(eventMessageBufferSizeResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -358,7 +361,7 @@
                                   3,    // numberEventClassReturned
                                   0x0,  0x5,  0xfa};
     rc = terminusManager.enqueueResponse(
-        new (eventMessageSupportedResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(eventMessageSupportedResp.data()),
         sizeof(eventMessageSupportedResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -371,7 +374,7 @@
     std::array<uint8_t, sizeof(pldm_msg_hdr) + SetEventReceiverLen>
         SetEventReceiverResp{0x0, 0x02, 0x04, PLDM_SUCCESS};
     rc = terminusManager.enqueueResponse(
-        new (SetEventReceiverResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(SetEventReceiverResp.data()),
         sizeof(SetEventReceiverResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -439,7 +442,8 @@
             4 // eventData first part
         };
     auto rc = terminusManager.enqueueResponse(
-        new (pollForPlatformEventMessage1Resp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(
+            pollForPlatformEventMessage1Resp.data()),
         sizeof(pollForPlatformEventMessage1Resp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -476,7 +480,8 @@
             0x5d // crc32
         };
     rc = terminusManager.enqueueResponse(
-        new (pollForPlatformEventMessage2Resp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(
+            pollForPlatformEventMessage2Resp.data()),
         sizeof(pollForPlatformEventMessage2Resp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -489,7 +494,8 @@
             0x0, 0x0 // eventID
         };
     rc = terminusManager.enqueueResponse(
-        new (pollForPlatformEventMessage3Resp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(
+            pollForPlatformEventMessage3Resp.data()),
         sizeof(pollForPlatformEventMessage3Resp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
diff --git a/platform-mc/test/platform_manager_test.cpp b/platform-mc/test/platform_manager_test.cpp
index aaa808a..76a4f27 100644
--- a/platform-mc/test/platform_manager_test.cpp
+++ b/platform-mc/test/platform_manager_test.cpp
@@ -1,3 +1,4 @@
+#include "common/start_lifetime_as.hpp"
 #include "mock_terminus_manager.hpp"
 #include "platform-mc/platform_manager.hpp"
 #include "test/test_instance_id.hpp"
@@ -68,7 +69,7 @@
             0x0 // dataTransferHandleTimeout
         };
     auto rc = mockTerminusManager.enqueueResponse(
-        new (getPDRRepositoryInfoResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPDRRepositoryInfoResp.data()),
         sizeof(getPDRRepositoryInfoResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -142,8 +143,9 @@
         0,                             // fatalHigh
         0                              // fatalLow
     };
-    rc = mockTerminusManager.enqueueResponse(new (getPdrResp.data()) pldm_msg,
-                                             sizeof(getPdrResp));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getPdrResp.data()),
+        sizeof(getPdrResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     const size_t getPdrAuxNameRespLen = 39;
@@ -178,7 +180,8 @@
             0x00  // Entity Name "S0"
         };
     rc = mockTerminusManager.enqueueResponse(
-        new (getPdrAuxNameResp.data()) pldm_msg, sizeof(getPdrAuxNameResp));
+        std::start_lifetime_as<pldm_msg>(getPdrAuxNameResp.data()),
+        sizeof(getPdrAuxNameResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     mockTerminusManager.updateMctpEndpointAvailability(
@@ -234,7 +237,7 @@
             0x0 // dataTransferHandleTimeout
         };
     auto rc = mockTerminusManager.enqueueResponse(
-        new (getPDRRepositoryInfoResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPDRRepositoryInfoResp.data()),
         sizeof(getPDRRepositoryInfoResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -308,8 +311,9 @@
         0,                             // fatalHigh
         0                              // fatalLow
     };
-    rc = mockTerminusManager.enqueueResponse(new (getPdrResp.data()) pldm_msg,
-                                             sizeof(getPdrResp));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getPdrResp.data()),
+        sizeof(getPdrResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     const size_t getPdrAuxNameRespLen = 39;
@@ -344,7 +348,8 @@
             0x00  // Entity Name "S0"
         };
     rc = mockTerminusManager.enqueueResponse(
-        new (getPdrAuxNameResp.data()) pldm_msg, sizeof(getPdrAuxNameResp));
+        std::start_lifetime_as<pldm_msg>(getPdrAuxNameResp.data()),
+        sizeof(getPdrAuxNameResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     mockTerminusManager.updateMctpEndpointAvailability(
@@ -392,7 +397,7 @@
             0x0 // dataTransferHandleTimeout
         };
     auto rc = mockTerminusManager.enqueueResponse(
-        new (getPDRRepositoryInfoResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPDRRepositoryInfoResp.data()),
         sizeof(getPDRRepositoryInfoResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -466,8 +471,9 @@
         0,                             // fatalHigh
         0                              // fatalLow
     };
-    rc = mockTerminusManager.enqueueResponse(new (getPdrResp.data()) pldm_msg,
-                                             sizeof(getPdrResp));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getPdrResp.data()),
+        sizeof(getPdrResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     stdexec::sync_wait(platformManager.initTerminus());
@@ -509,7 +515,7 @@
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPDRRepositoryInfoLen>
         getPDRRepositoryInfoResp{0x0, 0x02, 0x50, PLDM_ERROR};
     auto rc = mockTerminusManager.enqueueResponse(
-        new (getPDRRepositoryInfoResp.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPDRRepositoryInfoResp.data()),
         sizeof(getPDRRepositoryInfoResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -517,8 +523,9 @@
     const size_t getPdrRespLen = 1;
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPdrRespLen> getPdrResp{
         0x0, 0x02, 0x51, PLDM_ERROR};
-    rc = mockTerminusManager.enqueueResponse(new (getPdrResp.data()) pldm_msg,
-                                             sizeof(getPdrResp));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getPdrResp.data()),
+        sizeof(getPdrResp));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     stdexec::sync_wait(platformManager.initTerminus());
diff --git a/platform-mc/test/terminus_manager_test.cpp b/platform-mc/test/terminus_manager_test.cpp
index 9bee4b9..3b0173d 100644
--- a/platform-mc/test/terminus_manager_test.cpp
+++ b/platform-mc/test/terminus_manager_test.cpp
@@ -1,3 +1,4 @@
+#include "common/start_lifetime_as.hpp"
 #include "common/types.hpp"
 #include "mock_terminus_manager.hpp"
 #include "platform-mc/platform_manager.hpp"
@@ -140,19 +141,22 @@
 
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getTidRespLen> getTidResp0{
         0x00, 0x02, 0x02, 0x00, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (getTidResp0.data()) pldm_msg,
-                                             sizeof(getTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getTidResp0.data()),
+        sizeof(getTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
     std::array<uint8_t, sizeof(pldm_msg_hdr) + setTidRespLen> setTidResp0{
         0x00, 0x02, 0x01, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (setTidResp0.data()) pldm_msg,
-                                             sizeof(setTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(setTidResp0.data()),
+        sizeof(setTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPldmTypesRespLen>
         getPldmTypesResp0{0x00, 0x02, 0x04, 0x00, 0x01, 0x00,
                           0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmTypesResp0.data()) pldm_msg, sizeof(getPldmTypesResp0));
+        std::start_lifetime_as<pldm_msg>(getPldmTypesResp0.data()),
+        sizeof(getPldmTypesResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     pldm::MctpInfos mctpInfos{};
@@ -166,14 +170,17 @@
 
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getTidRespLen> getTidResp1{
         0x00, 0x02, 0x02, 0x00, 0x01};
-    rc = mockTerminusManager.enqueueResponse(new (getTidResp1.data()) pldm_msg,
-                                             sizeof(getTidResp1));
-    EXPECT_EQ(rc, PLDM_SUCCESS);
-    rc = mockTerminusManager.enqueueResponse(new (setTidResp0.data()) pldm_msg,
-                                             sizeof(setTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getTidResp1.data()),
+        sizeof(getTidResp1));
     EXPECT_EQ(rc, PLDM_SUCCESS);
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmTypesResp0.data()) pldm_msg, sizeof(getPldmTypesResp0));
+        std::start_lifetime_as<pldm_msg>(setTidResp0.data()),
+        sizeof(setTidResp0));
+    EXPECT_EQ(rc, PLDM_SUCCESS);
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getPldmTypesResp0.data()),
+        sizeof(getPldmTypesResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     mockTerminusManager.discoverMctpTerminus(mctpInfos);
@@ -197,7 +204,8 @@
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getTidRespLen> getTidResp0{
         0x00, 0x02, 0x02, 0x00, PLDM_TID_RESERVED};
     auto rc = mockTerminusManager.enqueueResponse(
-        new (getTidResp0.data()) pldm_msg, sizeof(getTidResp0));
+        std::start_lifetime_as<pldm_msg>(getTidResp0.data()),
+        sizeof(getTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     pldm::MctpInfos mctpInfos{};
@@ -211,11 +219,13 @@
     std::array<uint8_t, sizeof(pldm_msg_hdr) + setTidRespLen> setTidResp1{
         0x00, 0x02, 0x01, PLDM_ERROR};
 
-    rc = mockTerminusManager.enqueueResponse(new (getTidResp1.data()) pldm_msg,
-                                             sizeof(getTidResp1));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getTidResp1.data()),
+        sizeof(getTidResp1));
     EXPECT_EQ(rc, PLDM_SUCCESS);
-    rc = mockTerminusManager.enqueueResponse(new (setTidResp1.data()) pldm_msg,
-                                             sizeof(setTidResp1));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(setTidResp1.data()),
+        sizeof(setTidResp1));
     EXPECT_EQ(rc, PLDM_SUCCESS);
     mockTerminusManager.removeMctpTerminus(mctpInfos);
     EXPECT_EQ(0, termini.size());
@@ -229,15 +239,18 @@
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getPldmTypesRespLen>
         getPldmTypesResp2{0x00, 0x02, 0x04, PLDM_ERROR, 0x01, 0x00,
                           0x00, 0x00, 0x00, 0x00,       0x00, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (getTidResp2.data()) pldm_msg,
-                                             sizeof(getTidResp2));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getTidResp2.data()),
+        sizeof(getTidResp2));
     EXPECT_EQ(rc, PLDM_SUCCESS);
-    rc = mockTerminusManager.enqueueResponse(new (setTidResp2.data()) pldm_msg,
-                                             sizeof(setTidResp2));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(setTidResp2.data()),
+        sizeof(setTidResp2));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmTypesResp2.data()) pldm_msg, sizeof(getPldmTypesResp2));
+        std::start_lifetime_as<pldm_msg>(getPldmTypesResp2.data()),
+        sizeof(getPldmTypesResp2));
     EXPECT_EQ(rc, PLDM_SUCCESS);
     mockTerminusManager.removeMctpTerminus(mctpInfos);
     EXPECT_EQ(0, termini.size());
@@ -255,14 +268,16 @@
 
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getTidRespLen> getTidResp0{
         0x00, 0x02, 0x02, 0x00, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (getTidResp0.data()) pldm_msg,
-                                             sizeof(getTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getTidResp0.data()),
+        sizeof(getTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     std::array<uint8_t, sizeof(pldm_msg_hdr) + setTidRespLen> setTidResp0{
         0x00, 0x02, 0x01, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (setTidResp0.data()) pldm_msg,
-                                             sizeof(setTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(setTidResp0.data()),
+        sizeof(setTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     uint8_t supportedType1Byte =
@@ -273,7 +288,8 @@
                           0x00, 0x00, 0x00, 0x00, 0x00,
                           0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmTypesResp0.data()) pldm_msg, sizeof(getPldmTypesResp0));
+        std::start_lifetime_as<pldm_msg>(getPldmTypesResp0.data()),
+        sizeof(getPldmTypesResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     pldm::MctpInfos mctpInfos{};
@@ -309,14 +325,16 @@
 
     std::array<uint8_t, sizeof(pldm_msg_hdr) + getTidRespLen> getTidResp0{
         0x00, 0x02, 0x02, 0x00, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (getTidResp0.data()) pldm_msg,
-                                             sizeof(getTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(getTidResp0.data()),
+        sizeof(getTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     std::array<uint8_t, sizeof(pldm_msg_hdr) + setTidRespLen> setTidResp0{
         0x00, 0x02, 0x01, 0x00};
-    rc = mockTerminusManager.enqueueResponse(new (setTidResp0.data()) pldm_msg,
-                                             sizeof(setTidResp0));
+    rc = mockTerminusManager.enqueueResponse(
+        std::start_lifetime_as<pldm_msg>(setTidResp0.data()),
+        sizeof(setTidResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     uint8_t byte0 = (1 << (PLDM_BASE % 8)) + (1 << (PLDM_PLATFORM % 8)) +
@@ -325,7 +343,8 @@
         getPldmTypesResp0{0x00, 0x02, 0x04, 0x00, byte0, 0x00,
                           0x00, 0x00, 0x00, 0x00, 0x00,  0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmTypesResp0.data()) pldm_msg, sizeof(getPldmTypesResp0));
+        std::start_lifetime_as<pldm_msg>(getPldmTypesResp0.data()),
+        sizeof(getPldmTypesResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
     /* Response GetPLDMVersion BASE, CC=0 */
@@ -351,7 +370,7 @@
             0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
             0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmCommandBaseResp0.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPldmCommandBaseResp0.data()),
         sizeof(getPldmCommandBaseResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -399,7 +418,7 @@
             0x00, 0x00,  0x00,  0x00, 0x00,  0x00,   0x00,  0x00, 0x00,
             0x00, 0x00,  0x00,  0x00, 0x00,  0x00,   0x00,  0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmCommandPlatResp0.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPldmCommandPlatResp0.data()),
         sizeof(getPldmCommandPlatResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -428,7 +447,7 @@
             0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00, 0x00, 0x00,
             0x00, 0x00, 0x00, 0x00, 0x00,  0x00,  0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmCommandBiosResp0.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPldmCommandBiosResp0.data()),
         sizeof(getPldmCommandBiosResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
@@ -458,7 +477,7 @@
             0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0x00,
             0x00, 0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00};
     rc = mockTerminusManager.enqueueResponse(
-        new (getPldmCommandFruResp0.data()) pldm_msg,
+        std::start_lifetime_as<pldm_msg>(getPldmCommandFruResp0.data()),
         sizeof(getPldmCommandFruResp0));
     EXPECT_EQ(rc, PLDM_SUCCESS);
 
diff --git a/requester/test/handler_test.cpp b/requester/test/handler_test.cpp
index 0450065..1a86e50 100644
--- a/requester/test/handler_test.cpp
+++ b/requester/test/handler_test.cpp
@@ -191,7 +191,7 @@
             size_t responseLen = 0;
             int rc = PLDM_SUCCESS;
 
-            auto requestPtr = new (request.data()) pldm_msg;
+            auto requestPtr = std::start_lifetime_as<pldm_msg>(request.data());
             requestPtr->hdr.instance_id = instanceId;
 
             try
@@ -239,7 +239,7 @@
             pldm::Request request(sizeof(pldm_msg_hdr) + sizeof(uint8_t), 0);
             pldm::Response response;
 
-            auto requestPtr = new (request.data()) pldm_msg;
+            auto requestPtr = std::start_lifetime_as<pldm_msg>(request.data());
             requestPtr->hdr.instance_id = instanceId;
 
             co_await reqHandler.sendRecvMsg(eid, std::move(request));
@@ -307,7 +307,8 @@
 
     pldm::Response mockResponse(
         sizeof(pldm_msg_hdr) + PLDM_BASE_GET_TID_RESP_BYTES, 0);
-    auto mockResponseMsg = new (mockResponse.data()) pldm_msg;
+    auto mockResponseMsg =
+        std::start_lifetime_as<pldm_msg>(mockResponse.data());
 
     // Compose response message of getTID command
     pldm_base_get_tid_resp resp{PLDM_SUCCESS, expectedTid};