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/