0

我有 2 个程序.. 一个要学习,另一个是剖析它.. 就像.. 我有一个计算每秒游戏帧数的函数。

其中一个:sprintf(FPS, "Immortal Conflicts: FPS: %d,", misc.FPS); 另一个没问题

sprintf(FPS, "Immortal_Conf %d", misc.FPS); 由于某种原因,当我在第二个函数数据中输入更多字符时,是否有某种原因......堆栈字符或其他东西,因为数字长如 8 位并且不会改变。

它写得像 Immortal_Conflicts: FPS: 8454390345

*我注意到当我从地方改变它时……它吓坏了……哈哈

字符 FPS[2];

哦,它适用于 FPS[20] =O 我对数组和字符一无所知.. 事实上.. 我学到了一些东西.. 哈哈,我发现了我的问题,哈哈

4

1 回答 1

3

缓冲区溢出,因为FPS只能容纳两个字符。它需要足够大以容纳生成的字符串。

因为这是 C++ 建议使用std::ostringstream来构造你的字符串:

#include <sstream>

std::ostringstream FPS;
FPS << "Immortal Conflicts: FPS: " << misc.FPS; // FPS.str() will return a
                                                // std::string of the data.
于 2012-05-18T20:37:36.167 回答