gpt4 book ai didi

c++ - 下面的代码是否真的释放了 C/C++ 中的内存?

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

代码如下:

int main()
{
char str[] = {'a','b','c',' ','d','e',' ',' ','f',' ',' ',' ','g','h','i',' ',' ',' ',' ','j','k'};
cout << "Len = " << strlen(str) << endl;

char* cstr = new char[strlen(str)];
strcpy(cstr, str);

cstr[5] = '\0';

cout << "Len= " << strlen(cstr) << endl;

return 0;
}

//---------------
Result console:
Len = 21
Len= 5

如您所见,cstr 的 Len 发生了变化。这意味着 cstr 的剩余内存区域是空闲的。对吗?

最佳答案

没有。 strlen() 所做的只是查找字符串中的第一个空字符 ('\0')。它不会释放内存。它甚至不关心它检查的内存是否正确分配。如果从您给它的指针开始没有找到空字符,它将愉快地走过分配内存的末尾以搜索空字符。

关于c++ - 下面的代码是否真的释放了 C/C++ 中的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34532503/

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