【发布时间】:2021-03-17 02:49:40
【问题描述】:
Sonarqube 报告以下代码的内存泄漏。如果我们将strdup() 的输出分配给char * temp 变量并稍后释放temp 变量,则SQ 不会报告任何潜在的内存泄漏。
class A
{
public:
string name;
};
int main()
{
A a;
char * str = "abcdef";
a.name = strdup(str);
return 0;
}
【问题讨论】:
-
不,它没有潜在的内存泄漏,它有实际的内存泄漏。
-
令人惊讶的是如何将匹配无关的代码添加到这个问题中。为什么会有
A的类?为什么将字符串文字分配给char *(不应编译)。都可以换成main() { strdup("abcdef"); }
标签: c++