c - 释放函数中分配的内存

标签 c function malloc

以这段代码为例:

int *doSomething(void) {
    int *something = malloc(sizeof(int));
    return something;
}

int main() {
    int *point = doSomething();
    //code does something...
    free(point);
}

我想知道是否必须释放在 doSomething() 中分配的内存,就像在 return something; 之后我是否必须执行 free(something); ?或者执行 free(point); 也会清除 something? 或者也许我必须在代码结束之前在 main 函数中执行 free(something);

最佳答案

不,您不必在 doSomething() 中释放内存,free(point) 应该释放内存 malloc()ed在 doSomething() 中提供指针不递增(涉及指针运算),因为您必须传递给 free() 的指针必须已由 *alloc() 函数之一返回。

在检查 point != NULL 之前,您应该注意访问 main() 中的 point

注意:当您说清除时,您应该知道内存并没有被清除,它被释放只是为了再次使用,清除它是不必要的而且代价高昂。

关于c - 释放函数中分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35379698/

相关文章:

c - 快速 PWM - OC0A (PB2) 上的 ATtiny2313

c - 需要解释一下这段代码是如何工作的

python - 在交互式 IPython shell 中从函数调用 shell-command

embedded - 如何更改 FreeRTOS 中任务的最大可用堆大小?

c - 分配内存不起作用

c - udp 客户端服务器程序传输文件时出现段错误(核心转储)

c - 用于大小分析的 GCC 工具?

function - 调用一个函数 n 次 acl2

c++ - 在函数调用中使用构造函数?

c - 3维数组的分配