gpt4 book ai didi

c - C中字符串的动态内存分配

转载 作者:行者123 更新时间:2023-11-30 17:46:27 25 4
gpt4 key购买 nike

我发现这段代码运行得很好。

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




int main(int argc,char *argv[])
{
char* s; /* input string */
s=malloc(sizeof(s));

int c;

if(argc==1){ // if file name not given


while (gets(s)){
puts(s);
}
}
}

我不明白的是,字符串s如何存储在内存中。我只为指针s分配内存,它有4个字节。现在用户给出的输入字符串存储在哪里?

最佳答案

仅前四个字节是安全的。第五个字节将超出分配的数据并影响其他内容,这将产生未定义的行为(可能会崩溃,也可能不会)。

此外,在写完字符后,您不会以 '\0' 结束字符串,因此当您尝试调用字符串例程 (strcpy) 时,您可能会引入另一次崩溃 - 除非内存无论如何,在你的字符串碰巧包含零之后,但你自然不应该依赖这个机会!

关于c - C中字符串的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19263396/

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