我正在使用 gcc 8.2.1 并尝试构建此代码:
std::string dir = "Documents";
char * _tempname = static_cast <char*> (malloc( dir.length() + 14));
strncpy (_tempname, dir.c_str(), dir.length()+1 );
strncat (_tempname, "/hellooXXXXXX", 13);
但它给了我这个警告:
警告:
'char* strncat(char*, const char*, size_t)'
指定的界限 13 等于源长度 [-Wstringop-overflow=]
搜索后,根据此链接中的讨论,我发现 size_t 等于源长度是一个溢出问题,但我不明白为什么这被认为是一个问题以及为什么这会溢出目标。以及如何在不更改代码的情况下删除此警告?