优化这段代码 if(NULL == pLVOID || 0 >= iLen) return; quint8 *ucTmArr; ucTmArr = new quint8[iLen]; //将plvoid指针的内容倒序写入uctmarr for (int i = 0;i < iLen;i++) { *(ucTmArr+i) = *((quint8*)pLVOID - i + iLen- 1); } memcpy((quint8*)pLVOID,ucTmArr,iLen); delete ucTmArr; ucTmArr = NULL;
时间: 2024-03-19 17:43:29 浏览: 69
C++代码评审(CodeReview)等级标准
可以尝试对代码进行以下优化:
1. 使用智能指针代替裸指针,避免手动调用 delete。
2. 使用 std::reverse 函数代替手动倒序,提高代码可读性和效率。
3. 可以考虑使用 std::span 代替裸指针,提高代码可读性。
优化后的代码如下:
```c++
#include <memory>
#include <span>
#include <algorithm>
void reverseBytes(void* pLVOID, int iLen)
{
if (nullptr == pLVOID || iLen <= 0)
{
return;
}
auto ucTmArr = std::make_unique<quint8[]>(iLen);
std::span<quint8> span(reinterpret_cast<quint8*>(pLVOID), iLen);
std::reverse_copy(span.begin(), span.end(), ucTmArr.get());
std::memcpy(pLVOID, ucTmArr.get(), iLen);
}
```
这里使用了智能指针管理内存,避免手动调用 delete。同时使用 std::reverse 函数代替手动倒序,提高了代码可读性和效率。另外,使用 std::span 代替裸指针,可以提高代码可读性。
阅读全文