gpt4 book ai didi

c - 使用 malloc 在 C 中正确使用/创建动态 cstrings?

转载 作者:行者123 更新时间:2023-12-04 12:35:08 24 4
gpt4 key购买 nike

以下代码总是出现段错误:

  char *test3 = (char *) malloc(sizeof(char) * 5);
test3 = "asdf";
printf("%s\n", test3);

下面的代码没有段错误:

  char *test3 = (char *) malloc(sizeof(char) * 5);
test3[0] = 'a';
test3[1] = 'b';
test3[2] = 'c';
test3[3] = 'd';
test3[4] = '\0';
printf("%s\n", test3);

我想问题可能是如何将 cstring 文字分配给动态创建的 cstring?

最佳答案

“填充”字符串的正确方法是:

 strcpy(test3, "abcd"); 

但是,我强烈建议您不要使用 malloc [并且绝对不要使用 (char *) malloc(...) - 因为那可以隐藏一些相当讨厌的错误,这些错误至少会在适当的时候跳起来咬你,因为错误确实有这样做的倾向 - 你可能这样做是因为你正在将你的 C 代码编译为 C++ 代码,这是错误的,并且教你这样的坏习惯]。

使用malloc 分配小字符串是一种很大的空间浪费。您的 5 个字符的字符串可能有 16-32 个字节的开销,并将四舍五入为 8 或 16 个字节。所以总共它可能使用 48 个字节来存储 5 个字节——这是一种巨大的空间浪费。

关于c - 使用 malloc 在 C 中正确使用/创建动态 cstrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18115517/

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