diff --git a/src/OSspecific/POSIX/POSIX.C b/src/OSspecific/POSIX/POSIX.C
index ec024922ef257bb5e2e82a5a8c72a42bc47b025a..191694981df7295cb7545bcdcde39ba808f163f7 100644
--- a/src/OSspecific/POSIX/POSIX.C
+++ b/src/OSspecific/POSIX/POSIX.C
@@ -1428,7 +1428,7 @@ bool Foam::ping
     }
 
     // Fill sockaddr_in structure with dest address and port
-    memset(reinterpret_cast<char *>(&destAddr), '\0', sizeof(destAddr));
+    std::memset(reinterpret_cast<char *>(&destAddr), '\0', sizeof(destAddr));
     destAddr.sin_family = AF_INET;
     destAddr.sin_port = htons(ushort(destPort));
     destAddr.sin_addr.s_addr = addr;
diff --git a/src/OpenFOAM/containers/Lists/List/List.C b/src/OpenFOAM/containers/Lists/List/List.C
index af83584d7fc1b42a777727b6410f2365f3e2959c..8953aa436d69d3a1754ebd2f3c2dc5f73faa9e69 100644
--- a/src/OpenFOAM/containers/Lists/List/List.C
+++ b/src/OpenFOAM/containers/Lists/List/List.C
@@ -59,7 +59,10 @@ void Foam::List<T>::doResize(const label newSize)
                 #ifdef USEMEMCPY
                 if (contiguous<T>())
                 {
-                    memcpy(nv, this->v_, overlap*sizeof(T));
+                    std::memcpy
+                    (
+                        static_cast<void*>(nv), this->v_, overlap*sizeof(T)
+                    );
                 }
                 else
                 #endif
@@ -185,21 +188,26 @@ Foam::List<T>::List(const UList<T>& a)
 :
     UList<T>(nullptr, a.size_)
 {
-    if (this->size_)
+    const label len = this->size_;
+
+    if (len)
     {
         doAlloc();
 
         #ifdef USEMEMCPY
         if (contiguous<T>())
         {
-            memcpy(this->v_, a.v_, this->byteSize());
+            std::memcpy
+            (
+                static_cast<void*>(this->v_), a.v_, this->byteSize()
+            );
         }
         else
         #endif
         {
             List_ACCESS(T, (*this), vp);
             List_CONST_ACCESS(T, a, ap);
-            List_FOR_ALL((*this), i)
+            for (label i = 0; i < len; ++i)
             {
                 vp[i] = ap[i];
             }
@@ -213,21 +221,26 @@ Foam::List<T>::List(const List<T>& a)
 :
     UList<T>(nullptr, a.size_)
 {
-    if (this->size_)
+    const label len = this->size_;
+
+    if (len)
     {
         doAlloc();
 
         #ifdef USEMEMCPY
         if (contiguous<T>())
         {
-            memcpy(this->v_, a.v_, this->byteSize());
+            std::memcpy
+            (
+                static_cast<void*>(this->v_), a.v_, this->byteSize()
+            );
         }
         else
         #endif
         {
             List_ACCESS(T, (*this), vp);
             List_CONST_ACCESS(T, a, ap);
-            List_FOR_ALL((*this), i)
+            for (label i = 0; i < len; ++i)
             {
                 vp[i] = ap[i];
             }
@@ -247,22 +260,29 @@ Foam::List<T>::List(List<T>& a, bool reuse)
         this->v_ = a.v_;
         a.v_ = nullptr;
         a.size_ = 0;
+        return;
     }
-    else if (this->size_)
+
+    const label len = this->size_;
+
+    if (len)
     {
         doAlloc();
 
         #ifdef USEMEMCPY
         if (contiguous<T>())
         {
-            memcpy(this->v_, a.v_, this->byteSize());
+            std::memcpy
+            (
+                static_cast<void*>(this->v_), a.v_, this->byteSize()
+            );
         }
         else
         #endif
         {
             List_ACCESS(T, (*this), vp);
             List_CONST_ACCESS(T, a, ap);
-            List_FOR_ALL((*this), i)
+            for (label i = 0; i < len; ++i)
             {
                 vp[i] = ap[i];
             }
@@ -454,19 +474,24 @@ void Foam::List<T>::operator=(const UList<T>& a)
 {
     reAlloc(a.size_);
 
-    if (this->size_)
+    const label len = this->size_;
+
+    if (len)
     {
         #ifdef USEMEMCPY
         if (contiguous<T>())
         {
-            memcpy(this->v_, a.v_, this->byteSize());
+            std::memcpy
+            (
+                static_cast<void*>(this->v_), a.v_, this->byteSize()
+            );
         }
         else
         #endif
         {
             List_ACCESS(T, (*this), vp);
             List_CONST_ACCESS(T, a, ap);
-            List_FOR_ALL((*this), i)
+            for (label i = 0; i < len; ++i)
             {
                 vp[i] = ap[i];
             }
@@ -522,7 +547,7 @@ void Foam::List<T>::operator=(const IndirectListBase<T, Addr>& list)
     {
         List_ACCESS(T, (*this), vp);
 
-        for (label i=0; i<len; ++i)
+        for (label i=0; i < len; ++i)
         {
             vp[i] = list[i];
         }
diff --git a/src/OpenFOAM/containers/Lists/UList/UList.C b/src/OpenFOAM/containers/Lists/UList/UList.C
index 81a9996fe5153dcb38539560b4d35db836b75413..ae73d7986b12765a568829d4f8e09e7779dc051c 100644
--- a/src/OpenFOAM/containers/Lists/UList/UList.C
+++ b/src/OpenFOAM/containers/Lists/UList/UList.C
@@ -118,7 +118,10 @@ void Foam::UList<T>::deepCopy(const UList<T>& list)
         #ifdef USEMEMCPY
         if (contiguous<T>())
         {
-            memcpy(this->v_, list.v_, this->byteSize());
+            std::memcpy
+            (
+                static_cast<void*>(this->v_), list.v_, this->byteSize()
+            );
         }
         else
         #endif
diff --git a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C
index f3dd2f741e2b7a3217fc3266b42cfc366520ad0b..f428e0b43cb63f25ba05e86c0a318e8c5ff7c8d3 100644
--- a/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C
+++ b/src/OpenFOAM/matrices/lduMatrix/lduAddressing/lduInterface/processorLduInterfaceTemplates.C
@@ -50,7 +50,7 @@ void Foam::processorLduInterface::send
         (
             commsType,
             neighbProcNo(),
-            reinterpret_cast<const char*>(f.begin()),
+            reinterpret_cast<const char*>(f.cdata()),
             nBytes,
             tag(),
             comm()
@@ -64,20 +64,23 @@ void Foam::processorLduInterface::send
         (
             commsType,
             neighbProcNo(),
-            receiveBuf_.begin(),
+            receiveBuf_.data(),
             nBytes,
             tag(),
             comm()
         );
 
         resizeBuf(sendBuf_, nBytes);
-        memcpy(sendBuf_.begin(), f.begin(), nBytes);
+        std::memcpy
+        (
+            static_cast<void*>(sendBuf_.data()), f.cdata(), nBytes
+        );
 
         OPstream::write
         (
             commsType,
             neighbProcNo(),
-            sendBuf_.begin(),
+            sendBuf_.cdata(),
             nBytes,
             tag(),
             comm()
@@ -109,7 +112,7 @@ void Foam::processorLduInterface::receive
         (
             commsType,
             neighbProcNo(),
-            reinterpret_cast<char*>(f.begin()),
+            reinterpret_cast<char*>(f.data()),
             f.byteSize(),
             tag(),
             comm()
@@ -117,7 +120,10 @@ void Foam::processorLduInterface::receive
     }
     else if (commsType == Pstream::commsTypes::nonBlocking)
     {
-        memcpy(f.begin(), receiveBuf_.begin(), f.byteSize());
+        std::memcpy
+        (
+            static_cast<void*>(f.data()), receiveBuf_.cdata(), f.byteSize()
+        );
     }
     else
     {
@@ -156,10 +162,10 @@ void Foam::processorLduInterface::compressedSend
         label nFloats = nm1 + nlast;
         label nBytes = nFloats*sizeof(float);
 
-        const scalar *sArray = reinterpret_cast<const scalar*>(f.begin());
+        const scalar *sArray = reinterpret_cast<const scalar*>(f.cdata());
         const scalar *slast = &sArray[nm1];
         resizeBuf(sendBuf_, nBytes);
-        float *fArray = reinterpret_cast<float*>(sendBuf_.begin());
+        float *fArray = reinterpret_cast<float*>(sendBuf_.data());
 
         for (label i=0; i<nm1; i++)
         {
@@ -178,7 +184,7 @@ void Foam::processorLduInterface::compressedSend
             (
                 commsType,
                 neighbProcNo(),
-                sendBuf_.begin(),
+                sendBuf_.cdata(),
                 nBytes,
                 tag(),
                 comm()
@@ -192,7 +198,7 @@ void Foam::processorLduInterface::compressedSend
             (
                 commsType,
                 neighbProcNo(),
-                receiveBuf_.begin(),
+                receiveBuf_.data(),
                 nBytes,
                 tag(),
                 comm()
@@ -202,7 +208,7 @@ void Foam::processorLduInterface::compressedSend
             (
                 commsType,
                 neighbProcNo(),
-                sendBuf_.begin(),
+                sendBuf_.cdata(),
                 nBytes,
                 tag(),
                 comm()
@@ -248,7 +254,7 @@ void Foam::processorLduInterface::compressedReceive
             (
                 commsType,
                 neighbProcNo(),
-                receiveBuf_.begin(),
+                receiveBuf_.data(),
                 nBytes,
                 tag(),
                 comm()
@@ -262,9 +268,9 @@ void Foam::processorLduInterface::compressedReceive
         }
 
         const float *fArray =
-            reinterpret_cast<const float*>(receiveBuf_.begin());
+            reinterpret_cast<const float*>(receiveBuf_.cdata());
         f.last() = reinterpret_cast<const Type&>(fArray[nm1]);
-        scalar *sArray = reinterpret_cast<scalar*>(f.begin());
+        scalar *sArray = reinterpret_cast<scalar*>(f.data());
         const scalar *slast = &sArray[nm1];
 
         for (label i=0; i<nm1; i++)
diff --git a/src/OpenFOAM/primitives/hashes/SHA1/SHA1.C b/src/OpenFOAM/primitives/hashes/SHA1/SHA1.C
index e3706b6d6ed36ba3f00742c38a7359a5061fcfea..0573dee1cd7211081340349ec1e16daca54d8266 100644
--- a/src/OpenFOAM/primitives/hashes/SHA1/SHA1.C
+++ b/src/OpenFOAM/primitives/hashes/SHA1/SHA1.C
@@ -68,7 +68,7 @@ static inline uint32_t swapBytes(uint32_t n)
 //  *(uint32_t *) cp = val
 static inline void set_uint32(unsigned char *dst, uint32_t v)
 {
-    memcpy(dst, &v, sizeof(uint32_t));
+    std::memcpy(dst, &v, sizeof(uint32_t));
 }
 //! \endcond
 
@@ -96,7 +96,7 @@ void Foam::SHA1::processBytes(const void *data, size_t len)
 
         unsigned char* bufp = reinterpret_cast<unsigned char*>(buffer_);
 
-        memcpy(&bufp[remaining], data, add);
+        std::memcpy(&bufp[remaining], data, add);
         bufLen_ += add;
 
         if (bufLen_ > 64)
@@ -106,7 +106,7 @@ void Foam::SHA1::processBytes(const void *data, size_t len)
             bufLen_ &= 63;
             // The regions in the following copy operation do not
             // (cannot) overlap
-            memcpy(buffer_, &bufp[(remaining + add) & ~63], bufLen_);
+            std::memcpy(buffer_, &bufp[(remaining + add) & ~63], bufLen_);
         }
 
         data = reinterpret_cast<const unsigned char*>(data) + add;
@@ -116,7 +116,7 @@ void Foam::SHA1::processBytes(const void *data, size_t len)
     // Process available complete blocks
     while (len >= 64)
     {
-        processBlock(memcpy(buffer_, data, 64), 64);
+        processBlock(std::memcpy(buffer_, data, 64), 64);
         data = reinterpret_cast<const unsigned char*>(data) + 64;
         len -= 64;
     }
@@ -127,13 +127,13 @@ void Foam::SHA1::processBytes(const void *data, size_t len)
         unsigned char* bufp = reinterpret_cast<unsigned char*>(buffer_);
         size_t remaining = bufLen_;
 
-        memcpy(&bufp[remaining], data, len);
+        std::memcpy(&bufp[remaining], data, len);
         remaining += len;
         if (remaining >= 64)
         {
             processBlock(buffer_, 64);
             remaining -= 64;
-            memcpy(buffer_, &buffer_[16], remaining);
+            std::memcpy(buffer_, &buffer_[16], remaining);
         }
         bufLen_ = remaining;
     }
@@ -356,7 +356,7 @@ bool Foam::SHA1::finalize()
 
         unsigned char* bufp = reinterpret_cast<unsigned char *>(buffer_);
 
-        memcpy(&bufp[bytes], fillbuf, (size-2) * sizeof(uint32_t) - bytes);
+        std::memcpy(&bufp[bytes], fillbuf, (size-2) * sizeof(uint32_t) - bytes);
 
         // Process remaining bytes
         processBlock(buffer_, size * sizeof(uint32_t));
diff --git a/src/Pstream/mpi/UPstream.C b/src/Pstream/mpi/UPstream.C
index 84069910da2d1698393c4de3d5b8e6175994dd42..98fedcd5376eaff4ec8541409d085d48f7e9113d 100644
--- a/src/Pstream/mpi/UPstream.C
+++ b/src/Pstream/mpi/UPstream.C
@@ -574,7 +574,7 @@ void Foam::UPstream::allToAll
                 << " does not equal bytes to receive " << recvSizes[0]
                 << Foam::abort(FatalError);
         }
-        memmove(recvData, &sendData[sendOffsets[0]], recvSizes[0]);
+        std::memmove(recvData, &sendData[sendOffsets[0]], recvSizes[0]);
     }
     else
     {
@@ -640,7 +640,7 @@ void Foam::UPstream::gather
 
     if (!UPstream::parRun())
     {
-        memmove(recvData, sendData, sendSize);
+        std::memmove(recvData, sendData, sendSize);
     }
     else
     {
@@ -703,7 +703,7 @@ void Foam::UPstream::scatter
 
     if (!UPstream::parRun())
     {
-        memmove(recvData, sendData, recvSize);
+        std::memmove(recvData, sendData, recvSize);
     }
     else
     {