C语言 释放双指针的正确方法



释放浮点数的正确方法是什么 ** 如下所示。

例如 float ** someArray

for(int i = 0; i < numberOfDimensions; i++)
    {
        somearray[i] = (float *) malloc(numberOfDimensions * sizeof(float));
    }

如果您错误地分配了另一轮内存并将其分配给原始数组中的每个浮点指针,那么您也应该事先释放它们:

int i;
for (i = 0; i < numberOfDimensions; i++)
    free(someArray[i]);
// and free the container array only now
free(someArray);

P. s.:不要强制转换 malloc 的返回值。

我相信你应该释放元素,然后释放数组。

向后看:

for(int i = 0; i < numberOfDimensions; i++)
{
    free(somearray[i]);
}
free(somearray);

好吧,在这种情况下,你只是自由(someArray)。现在,如果您恶意分配更多内存并将其添加到 someArray,那么您需要遍历该数组并释放每个对象。

换句话说,如果您:

for(int i=0; i< whatever; ++i) {
  someArray[i] = malloc(...
}

然后你需要再次走一遍,在释放一些数组之前做自由

只是一个简单的 1- free()调用:

free(someArray);
for(int i = 0; i < numberOfDimensions; i++)
{
    free(somearray[i]);
    somearray[i] = NULL;
}
free(somearray);
somearray=NULL;

(somearray[i] = NULL)这一行将断开每个数组元素的链接,最后(somearray=NULL)将断开与数组的链接。这两行将释放动态内存数组,操作系统将此释放的内存分配给其他进程

相关内容

  • 没有找到相关文章

最新更新