我在将 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 以供参考。