我是这样分配的:
float** matrix = new float*[size];
for (int i = 0; i < size; i++) {
matrix[i] = new float[size];
}
这是我解除分配的方式:
if (matrix != nullptr) {
for (int i = 0; i < size; i++) {
delete[] matrix[i];
}
}
free(matrix);
这是正确的还是我也应该删除[]
外部数组?
最佳答案
delete[]
总是与 new[]
配对。
delete
总是与new
配对。
所以是的,在您的情况下,您需要调用 delete[] matrix;
来释放 float*
指针数组。 不要使用free
,除非该指针是通过调用malloc
&c.获得的,这在C++中是不常见的。
不过,如果您想在数学意义上对矩阵建模,那么我建议您使用第三部分库。我使用 BLAS,它是 Boost 发行版的一部分。
关于c++ - 如何在 C++ 中正确释放二维数组的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47773195/