我应该这样做吗?

时间:2013-08-09 15:05:59

标签: c++ variables memory c++11 buffer

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

我的问题是;我不确定在函数中定义时如何处理Buffers,well chars和int类型变量。正如你注意到我从内存中归零它,我用几乎所有定义类型的函数来做这件事只是为了保持内存清洁,我构建的应用程序类型和它所用的平台我无法调试深入/窥视记忆。

1 个答案:

答案 0 :(得分:0)

首先,你没有完全归零缓冲区的内存

RtlZeroMemory(Buffer, sizeof(char));

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

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

第三个问题尚不清楚。你是什​​么意思问"我不确定如何在函数中定义Buffers,well chars和int类型变量"。一般的答案是以相同的方式处理,就好像它们被定义为不在函数内。你可以澄清一下你的问题吗?