gpt4 book ai didi

c - 在 C 中返回 malloced 指针

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:19 26 4
gpt4 key购买 nike

我有以下程序:

#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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com