gpt4 book ai didi

c - 在 C 中释放二维数组的内存时出现异常警告

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:56 24 4
gpt4 key购买 nike

我正在尝试释放分配给二维数组的内存。

代码运行良好,但编译时总是有警告。

我尝试了 2 种不同的方法,但每次都会出现新的警告。

    int* array = fillArray(); //malloc (n*m*sizeof*array)

...
DeallocateMemory(array, n*m); //Where n and m are length and height

void DeallocateMemory(int* array, int length)
{
for (int i = 0; i < length; i++){
//free(array[i]);
//free((void*)array[i]);
}
}
free(array);

好的,一开始,我写了 free(array[i]) 但警告说:

*传递 free 的参数 1 从整数生成指针,无需强制转换注意:应为 void* 但参数类型为 int*

所以我写了void*,但是现在警告是:

从不同大小的整数转换为指针

我应该怎么做才能摆脱这两个错误?谢谢!

最佳答案

只要说free(array); 不需要释放数组的每个位置。在数组的每个位置,都会存储一个 int 以释放导致警告的 int

如果你有二维数组,那么只有它像你那样才有意义。

 //Allocate the memory
int** array = malloc(n * sizeof(int*));
for (unsigned int k = 0; k < n; k++) {
array[k] = malloc(m * sizeof(int));
}

//Deallocate the memory
void DeallocateMemory(int** array, int n) {
for (int i = 0; i < n; i++){
free(array[i]);
}
}

关于c - 在 C 中释放二维数组的内存时出现异常警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19644295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com