我需要在我的C++程序中的C函數,相剋編譯代碼時++,我得到以下警告:克++ + strncat函數:可能導致目標緩衝區溢出
In function ‘char* strncat(char*, const char*, size_t)’,
inlined from ‘int get_usage(pid_t, pstat*)’ at src/getusage.c:24:
/usr/include/bits/string3.h:154: warning: call to
char* __builtin___strncat_chk(char*, const char*, long unsigned int,
long unsigned int) might overflow destination buffer
代碼:
int pidof(const char* process_name){
char cmd[50] ="pidof ";
strncat(cmd, process_name, sizeof(cmd) - strlen(cmd) -1);
[..]
如何擺脫此警告?
歡迎來到StackOverflow!請看周圍的常見問題:http://stackoverflow.com/faq – 2010-12-12 15:53:32
ouh,愚蠢的錯誤:)我誤讀錯誤消息,錯誤是在另一個strncat使用,我只通過緩衝區的大小作爲大小參數=>固定:) – fho 2010-12-12 16:14:30
你應該使用std :: string。它們更易於使用。已經構建了對連接的支持,並且它們也更安全。 – bruno 2010-12-12 16:20:15