0
void Clients::SetFog(char* fog)
{
  char Buffer[45];
  sprintf(Buffer, "d %s", fog);
  CMD(ID, SV_CMD_RELIABLE, Buffer);
  RtlZeroMemory(Buffer, sizeof(char));
}

我的问题是;我不确定在函数中定义缓冲区、井字符和 int 类型变量时如何处理。正如您注意到的那样,我从内存中将其归零,我使用几乎所有已定义类型的函数来执行此操作,以保持内存清洁,我正在构建的应用程序类型和它的平台我无法调试那么深/窥视内存。

4

1 回答 1

0

首先,您没有将 Buffer 的内存完全归零

RtlZeroMemory(Buffer, sizeof(char));

仅将第一个字节归零,因为 sizeof(char) 为 1

其次,您的代码不安全,因为 strlen(fog) 可能超过 Buffer 的长度(即 45)

第三,你的问题不清楚。你是什​​么意思问“我不确定在函数中定义缓冲区、字符和 int 类型变量时如何处理”。一般的答案是,它们的处理方式与它们不是在函数内定义的方式相同。也许你可以澄清你的问题?

于 2013-08-09T15:47:49.423 回答