Я пытаюсь преобразовать устаревший код C для использования умных указателей.И наткнулся на следующее (просто фрагменты, чтобы начать):
MATRIX* cache;
---
cache = new MATRIX[numRow*numCol];
if (cache == NULL)
{
return FAIL;
}
---
memset(cache, 0, sizeof(MATRIX)*numRow*numCol);
---
memcpy(cache, matrix, sizeof(MATRIX)*numRow*numCol);
Я пытался преобразовать их, чтобы они стали такими:
std::unique_ptr<MATRIX[]> cache;
---
cache = std::make_unique<MATRIX[]>(numRow*numCol);
if (cache == NULL)
{
return FAIL;
}
---
cache.reset();
Это правильно?Есть ли лучший способ написать это?Кроме того, я не уверен, что сделать memcpy
C ++ аналог
memcpy(cache, matrix, sizeof(MATRIX)*numRow*numCol);
matrix
- это просто необработанный указатель типа MATRIX *.Какие-либо предложения??Большое вам спасибо!