我应该在malloc()之后的子函数中使用free()吗?

我应该在malloc()之后的子函数中使用free()吗?,c,malloc,dynamic-memory-allocation,free,C,Malloc,Dynamic Memory Allocation,Free,在我的项目中有一个子功能。在这个函数中,我需要临时存储数据。所以我使用malloc(),我不确定是否有必要使用free() 是的,由于您不再使用分配的内存,因此必须释放它 一旦从函数调用返回,您将无法访问分配的内存,因此无法释放它。因此,在离开函数作用域(如代码段所示)之前,您需要将指针传递到free(),以避免内存泄漏。是的,由于您不再使用分配的内存,因此必须释放它 一旦从函数调用返回,您将无法访问分配的内存,因此无法释放它。因此,在离开函数作用域(如代码段中所示)之前,您需要将指针传递到fr

在我的项目中有一个子功能。在这个函数中,我需要临时存储数据。所以我使用
malloc()
,我不确定是否有必要使用
free()


是的,由于您不再使用分配的内存,因此必须释放它


一旦从函数调用返回,您将无法访问分配的内存,因此无法释放它。因此,在离开函数作用域(如代码段所示)之前,您需要将指针传递到
free()
,以避免内存泄漏。

是的,由于您不再使用分配的内存,因此必须释放它


一旦从函数调用返回,您将无法访问分配的内存,因此无法释放它。因此,在离开函数作用域(如代码段中所示)之前,您需要将指针传递到
free()
,以避免内存泄漏。

如本答案中所述,如果在函数中分配内存,则应释放不再需要的内存,不释放它或不返回任何指向它的指针将导致内存泄漏

请注意,具有
void*
返回类型的函数
*hash2(…)
必须返回一个值,如果不需要,请改用
void


在您的特定代码中,似乎不需要使用
malloc
无论如何,您可以使用本地数组
无符号字符rtemp[32]
malloc
是一个涉及系统调用的繁重函数,如果您可以避免,您应该这样做。

如本答案中所述,您应该释放任何不再需要的内存,如果您在函数中分配内存,不释放它,不返回任何指向它的指针将导致内存泄漏

请注意,具有
void*
返回类型的函数
*hash2(…)
必须返回一个值,如果不需要,请改用
void

在您的特定代码中,似乎不需要使用
malloc
无论如何,您可以使用本地数组
无符号字符rtemp[32]
malloc
是一个涉及系统调用的繁重函数,如果可以避免,应该这样做

void *hash2(unsigned char *mes, element_t d)
{
    size_t iterations = strlen(mes) / 8;
    unsigned char *rtemp = malloc(32 * sizeof(char));
    SHA256(mes, iterations, rtemp);
    element_from_hash(d, rtemp, 32);
    free(rtemp);
}