将 malloc 转换为新的或 std::vector



我在将 malloc 从我的 c 代码转换为使用 new 的 c++ 方式时遇到问题。我还读过关于使用 std::vector 进行动态内存分配的信息。哪一个更适合我的情况,您将如何正确地做到这一点?

当前代码:

matrix_t * matrix = (matrix_t *) malloc(sizeof(matrix_t));

我尝试过:

matrix_t * matrix = new matrix_t[matrix_t];

我得到的错误:

error: expected primary-expression before ‘]’ token
    matrix_t * matrix = new matrix_t[matrix_t];
                                             ^

尝试:

matrix_t * matrix = new matrix_t;

假设一个包含 100 个项目的数组:

matrix_t * matrix = new matrix_t[100];

并通过 std::vector 做同样的事情:

 std::vector<matrix_t> matrices(100);

虽然 std::vector 可以随时调整大小

 std::vector<matrix_t> matrices;
 matrices.resize(100);

这些天它是完成的

auto matrix = std::make_unique<matrix_t>();

请参阅 https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique 以供参考。

最新更新