gpt4 book ai didi

c++ - 返回指向本地 char 变量的字符串对象是否安全

转载 作者:行者123 更新时间:2023-11-27 23:38:02 25 4
gpt4 key购买 nike

我相信下面的代码可以安全地返回字符串,尽管它并不优雅,并且可以按预期工作,但我想确认这一点,而且我还想要一个测试用例来环绕它来证明这一点是安全的;即,在重新使用堆栈后,调用者可以通过 .c_str() 方法访问字符串的内容:即,如何强制释放/重新使用局部变量所在的堆栈(我我正在使用 Visual Studio 2019 和 PVS-Studio 静态代码分析,两者都不会生成警告)。我不喜欢用全局的 szLocalTime 替换本地的 szLocalTime,也不喜欢在函数中使用 malloc 的想法,因为这会将责任推给调用者。我添加了一些填充 char[] 的情况示例,例如 C lib 或不知道字符串的 Win32 函数。

string FormatTimestamp(SYSTEMTIME st)
{
char szLocalTime[1000];

szLocalTime[0] = 0;

// *** Some code that depends on a char buffer fills szLocalTime...
// eg. strftime(szLocalTime, sizeof(szLocalTime)...);
// eg. GetDlgItemText(hDlg, ID, szLocalTime, sizeof(szLocalTime));



string s = szLocalTime; // <-- the question relates to this
return s;
}

最佳答案

std::string 总是复制它的初始值设定项。所以它是安全的。

关于c++ - 返回指向本地 char 变量的字符串对象是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774778/

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