gpt4 book ai didi

c++ - 在 C 中复制字符串时为空终止字符分配空间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:45 25 4
gpt4 key购买 nike

const char* src = "你好";

调用 strlen(src); 返回大小 5...

现在说我这样做:

char* dest = new char[strlen(src)];
strcpy(dest, src);

这似乎不应该起作用,但当我输出所有内容时它看起来是正确的。似乎我没有为最后的空终止符分配空间......这是对的吗?谢谢

最佳答案

您没有为终止符分配空间是正确的,但是不这样做并不一定会导致您的程序失败。您可能会覆盖堆上的以下信息,或者您的堆管理器会将分配大小四舍五入为 16 字节的倍数或类似的东西,因此您不一定会看到此错误的任何可见影响。

如果您在 Valgrind 下运行您的程序或其他堆调试器,您可能能够更快地检测到此问题。

关于c++ - 在 C 中复制字符串时为空终止字符分配空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1581348/

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