clang++:如何改进堆栈地址返回的警告

问题描述 投票:0回答:0

用于以下功能:

const char *fstack() 
{
char tab[100];

return tab;
}

const char *fc_str()
{
std::string s{"some text"};

return s.c_str();
}

const char * f_stringstream()
{
std::ostringstream s;

s<<"another text";

return s.str().c_str();
}

clang 发出警告 [-Wreturn-stack-address],尽管后面的 2 个并不完全在堆栈上,而是已经被删除并在堆上。无论如何。

我必须在以下代码或 clang++ 调用中更改什么才能获得相同的警告:

class C1 {
public:
std::string str;
};

const char* fun_class() 
{
C1 c;
c.str="class text";

return c.str.c_str();
}

因为在最后一种情况下我根本没有收到任何警告。

我阅读了所有可用的 clang++ 警告列表,以找到合适的内容,对堆栈和堆进行了 grep,但没有任何结果。

clang warnings clang++
© www.soinside.com 2019 - 2024. All rights reserved.