只是一个简单的问题,我有这个警告:
警告C6054:字符串cAddress可能不是以零结尾
bool GSC::bIsValidIPAdd(char *cIPAdd)
{
...........
...........
...........
ZeroMemory(cAddress, sizeof(cAddress));
memcpy(cAddress, cIPAdd, strlen(cIPAdd));
szLength = strlen(cAddress); //warning here
...........
...........
...........
...........
}
如果我添加此
cAddress[0] = '\0';
在ZeroMemory上面,警告已经解决......
但......代码的哪一部分首先应被剔除? ZeroMemory或'\ 0'?
谢谢你!答案 0 :(得分:-1)
问题来自于使用带有字符串的memcpy
。您应该依赖strcpy
,因为它将为您终止。
根据您声明cAddress
的方式,还存在潜在的问题。
char cAddress[10];
printf("%d\n", sizeof(cAddress));
char* cAddress = "test";
printf("%d\n", sizeof(cAddress));
首先打印10,但第二个打印8(或4,如果你是在32位平台上)。