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/