我有以下功能,有时会点击“检测到堆栈粉碎”。但是当我修改sprintf()
为时snprintf(nbytes_buf, sizeof(nbytes_buf), "%d", nbytes)
,问题就解决了。
“数据”永远不会大于 1024 字节。所以,我认为 nbytes_buf[20] 就足够了。但是当“数据”包含字符“>”时,我也遇到了“检测到堆栈粉碎”的问题。
有谁知道为什么?
int a( const char *data )
{
int nbytes;
char nbytes_buf[20];
nbytes = strlen(data);
sprintf(nbytes_buf, "%d", nbytes);
/* do something else */
return 0;
}