c - 在 C 中返回 malloced 指针

标签 c pointers malloc

我有以下程序:

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

char* getStr(int length) {
    char* chars = malloc(length + 1);
    int i;
    for(i = 0; i < length; i++)
        chars[i] = 'X';
    chars[i] = '\0';
    // no call to free()
    return chars;
}

int main(int argc, char** argv) {
    char* str;
    str = getStr(10);
    printf("%s\n", str);
    free(str);
    return EXIT_SUCCESS;
}

如我所料,它打印了 10 个 X。 它会在任何平台上使用任何编译器表现得像这样吗? getStr() 返回后内存是否仍然分配?

(我不想将指针作为参数传递:D)

最佳答案

是的,代码看起来有效,并且行为对于任何 C 编译器来说都应该是可靠的。

而且,是的,在 getStr() 返回后内存仍然被分配。所以调用free()也是正确的。

不要忘记检查 malloc() 是否返回 NULL,以防内存不足。

关于c - 在 C 中返回 malloced 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28637158/

相关文章:

C : Static to dynamic allocation on multiple dimension array

c - 混合使用 mmap(2) 和 malloc(3) 的安全方法需要 : the result of mmap(2) must be continuous

arrays - 如何用C实现埃拉托色尼筛法算法?

c - 暴露动态 IP 后面的本地网络服务器

c++ - 输入验证以确保只有数字 c++

c - 我如何将二维数组结构中的值替换为 c 中二维数组结构的不同值和打印函数?

c - Malloc 和 Realloc 的关系,当所需空间在内存中不可用时如何处理

创建动态数量的线程

c - 空指针类型转换

pointers - Golang 中的 *uint 和 uintptr 有什么区别?