c - 返回本地分配的内存(而不是本地变量)是否有效

标签 c

考虑以下代码:

#include <stdio.h>
#include <stdlib.h>

char* address(void);

int main(void)
{
    printf("The address is: %p", address());
    return 0;
}

char* address(void)
{
    char* temp = malloc(20);

    return temp;
}  

编译器不会给出任何类型的错误,并且根据我所读到的内容,我还没有遇到过这样的示例,无论它是有效的还是不推荐的方法。(考虑到内存释放是在某个时刻完成的)。返回本地分配的内存地址可以吗?

最佳答案

实际上取决于您的使用情况,只要您跟踪对 address() 的调用,并且当您不再需要该地址时释放该内存,应该没问题.

看看这个link (不是我的 - 在“动态对象”标题下)

关于c - 返回本地分配的内存(而不是本地变量)是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43297389/

相关文章:

c - scanf 如何知道何时结束 for 循环?

c++ - 在C/C++中,如何获取虚拟内存空间中的数据?

c - 汇编语言部-余数DX寄存器

c - RegSetValueEx : creating a DWORD value with the const BYTE data type

c++ - Ubuntu 不提供包含 uint24_t 类型的 Clang 的 stdint

c - 以多线程方式进行矩阵乘法

c - 程序崩溃并返回代码 255

c - 使用 fgets 读取文件

c++ - 是否可以简单地序列化 C++ 对象

c - 如何使用 mbedTLS 库或 openssl 检查证书是 CA 还是用户证书