相关疑难解决方法(0)

使用 gcc 8.2.1 时的 strncat Wformat-overflow 警告

我正在使用 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);
Run Code Online (Sandbox Code Playgroud)

但它给了我这个警告:

警告:'char* strncat(char*, const char*, size_t)'指定的边界 13 等于源长度 [-Wstringop-overflow=]

搜索后,我发现根据此链接中的讨论,size_t 等于源长度是一个溢出问题,但我不明白为什么这被认为是一个问题以及为什么这会溢出目标。以及如何在不更改代码的情况下删除此警告?

c++ string gcc gcc-warning gcc8

4
推荐指数
1
解决办法
6292
查看次数

标签 统计

c++ ×1

gcc ×1

gcc-warning ×1

gcc8 ×1

string ×1