c-我如何解决此警告C6386



如何解决发生在for循环内部行的C6386警告?

reverseString[i] = str[size - i - 1];警告出现在该行。

确切的误差是:;C6386:写入"reverseString"时缓冲区溢出:可写大小为"((size+1((*sizeof(char("字节,但可能写入"2"字节">

功能如下:

char* reverseString(char* str) {
if (str == NULL) {
printf("input errorn");
return NULL;
}
int size = strlen(str);
char* reverseString = malloc((size + 1) * sizeof(char));
if (reverseString != NULL) {
for (int i = 0; i < size; i++) {
reverseString[i] = str[size - i - 1];
}
reverseString[size] = '';

return reverseString;
}
else {
printf("error while allocating memoryn");
return NULL;
}
}

从这里找到了出现此警告的原因。

对于此特定示例,由于"size+1"从未变为0,因此可以忽略此警告。如果在调用malloc之前检查"size+1"是否大于0,则警告将消失。

最新更新