c++ - 将 char 设置为 '\0' 会泄漏内存吗?

标签 c++ c

char myStr[] = "Hello World";
char *p = strchr(myStr, 'W');
*p = '\0';
// Now myStr would be "Hello ";

如果我做这样的事情,这会泄漏“orld”部分的内存吗?

最佳答案

不,因为在 C 中,字符串只是预定义的 char'\0' 结尾的数组特点。字符串的所有空间都是在运行时预先分配的,并且不灵活,除非您重新分配变量以指向不同的内存部分,这超出了本问题的范围。

在您的示例中,您初始化了 char数组到“Hello World”,它是 12 个字节,计算末尾的\0 字符。这 12 个字节由您使用,直到程序完成,并且不会通过常规方式丢失。重置字符串的内容就像将不同的值写入 char 一样简单。大批。只要您的数据不超过数组的限制,您就不会遇到任何问题或内存泄漏。

希望这可以帮助。

关于c++ - 将 char 设置为 '\0' 会泄漏内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430658/

相关文章:

c++ - 是什么导致警告 "no return, in function returning non-void"?

c++ - 当此构造函数采用初始化列表并委托(delegate) vector 时,是什么导致此构造函数委托(delegate)给自身?

c++ - 未解析的外部符号 C++ Embedded

c++ - 我应该处理 WSASend() 可能不会发送所有数据的事实吗?

c - C 中的指针和字符变量

c++ - 波兰语表达的计算

c - 我如何告诉 cmake 执行这两个步骤来使用 winpcap?

检查 C/*nix 中指定用户的文件访问权限

c - 同时修改数组的所有元素

C : compare two character arrays