如下所示,释放浮动的正确方法是什么。
e.g。 float ** someArray
for(int i = 0; i < numberOfDimensions; i++)
{
somearray[i] = (float *) malloc(numberOfDimensions * sizeof(float));
}
答案 0 :(得分:4)
如果你有malloc'ed另一轮内存并将其分配给原始数组中的每个浮点指针,那么你应该事先释放它们:
int i;
for (i = 0; i < numberOfDimensions; i++)
free(someArray[i]);
// and free the container array only now
free(someArray);
答案 1 :(得分:1)
我相信你应该释放元素,然后释放数组。
答案 2 :(得分:1)
向后退:
for(int i = 0; i < numberOfDimensions; i++)
{
free(somearray[i]);
}
free(somearray);
答案 3 :(得分:0)
嗯,在这种情况下你只需要释放(someArray)。现在,如果你使用malloc更多内存并将其添加到someArray,那么你需要遍历该数组并释放每个对象。
换句话说,如果你:
for(int i=0; i< whatever; ++i) {
someArray[i] = malloc(...
}
然后你需要再次走它并在释放someArray之前释放它。
答案 4 :(得分:0)
只需简单的1 - free()
电话:
free(someArray);
答案 5 :(得分:-1)
for(int i = 0; i < numberOfDimensions; i++)
{
free(somearray[i]);
somearray[i] = NULL;
}
free(somearray);
somearray=NULL;
(somearray [i] = NULL)此行将断开每个数组元素的链接,最后(somearray = NULL)将断开与数组的链接。这两行将释放动态内存数组,操作系统将此释放的内存分配给其他进程