gpt4 book ai didi

c++ - 临时参数数组的内存泄漏

转载 作者:行者123 更新时间:2023-11-28 01:36:46 24 4
gpt4 key购买 nike

void setCString(char* s){
char* t = new char[strlen(s) + 1];
strcpy(t, s);
delete[] m_cstring; //del old contents from member var
m_cstring = t;
}

rA.setCString("Bii");

这不是内存泄漏吗? “Bii”在内存中创建,指向它的指针被传递给函数。在函数中进行了新的分配,并将 s 数组的内容复制到新的 t 数组。

当函数结束时,s 超出范围并被删除,但 s 指向的初始原始数组未被删除。

如果这是内存泄漏,如何修复(将 c 字符串作为数组...没有 std::string)?

最佳答案

“丢失”指向字符串文字的(可能是唯一的)指针不被视为内存泄漏,因为不能“释放”字符串文字及其“分配的内存”。实际上释放字符串文字是未定义的行为。所以在常识上没有“泄漏”;只是一个可能不再使用的字符串文字。

关于c++ - 临时参数数组的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48998586/

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