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

标签 c unix memory malloc free

如本主题的主题所示。我有一个简单的功能:

char *to_str(int x)
{
    char *s = malloc(6);

    if (s == NULL) {
        error("malloc");
    }

    snprintf(s, sizeof(s), "%d", x);
    return s;
}

在它的主体中分配内存,并返回这样的值。我应该如何处理内存释放?什么是最好的方法?

最佳答案

How should I handle memory deallocation?

小心。绝对比你现在做得更好。

What would be the best approach?

最好的方法是在您不再需要时free()内存:

char *str = to_str(1337);
// do stuff with `str'
free(str);

此外,sizeof() 是错误的。它为您提供指针的大小,而不是缓冲区的大小。您需要自己跟踪它。

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

相关文章:

memory - MPI Fortran 代码 : how to share data on node via openMP?

c++ 正在释放的指针未分配

c - 在 ioctl 中打开的不良副作用是什么?

c - 如何从下面提到的字符串格式中获取 '3 bits' 字段

c - 这个 c 递归函数产生这个页面错误有什么原因吗?

linux - bash find 命令没有给出我期望的输出

C++ 检查数组是否使用 'new' 创建

c - 当用户给出输入时,在 C 中遍历和打印队列的行为有所不同

c - 静态变量表现得像 C 中的全局变量

linux - 使用 awk 从文件生成报告