在C中返回mallocated指针



我有以下程序:

#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] = '';
    // no call to free()
    return chars;
}
int main(int argc, char** argv) {
    char* str;
    str = getStr(10);
    printf("%sn", str);
    free(str);
    return EXIT_SUCCESS;
}

正如我所料,它打印了10个X。它在任何带有编译器的平台上都会这样表现吗?getStr()返回后,内存是否仍处于mallocated状态?

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

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

是的,在getStr()返回之后,内存仍然被分配。因此,对free()的调用也是正确的。

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

如果使用malloc分配内存,则在显式调用free之前,它将一直处于分配状态,无论它如何在函数之间传递、返回等。

相关内容

  • 没有找到相关文章

最新更新