gpt4 book ai didi

c - 当我们调用 (char*)malloc(sizeof(char)) 为字符串分配内存时,它是否被初始化?如何初始化?

转载 作者:行者123 更新时间:2023-12-04 11:03:56 29 4
gpt4 key购买 nike

char* str = (char*)malloc(100*sizeof(char)); 
strcpy(str, ""); //Does this line initialize str to an empty string?

调用第 1 行后,分配的内存是否包含垃圾?调用2号线之后呢?

最佳答案

After calling line 1, does the allocated memory contain garbage?

它可以包含任何东西,因为根据标准的 malloc 不需要初始化内存,因此在大多数实现中也不应该。它很可能只包含该内存的先前“用户”放在那里的任何数据。

What about after calling line 2?

使用该指令,您将“字节值”为 0 的 \0 字符复制到分配内存的第一个字节。其他一切都还没有改变。您也可以使用 str[0] = '\0' 甚至 *str = '\0'。所有这些选项都使 str 指向一个“空字符串”。

还要注意,由于您标记了问题 C 而不是 C++,因此从 malloc 转换返回值是多余的。

关于c - 当我们调用 (char*)malloc(sizeof(char)) 为字符串分配内存时,它是否被初始化?如何初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33209654/

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