【发布时间】:2021-05-01 01:24:11
【问题描述】:
如何解决在 for 循环内的行出现的 C6386 警告?
reverseString[i] = str[size - i - 1]; 此行出现警告。
确切的错误是:“C6386:写入‘reverseString’时缓冲区溢出:可写大小为‘((size+1))*sizeof(char)’字节,但可能写入‘2’字节。”
功能如下:
char* reverseString(char* str) {
if (str == NULL) {
printf("input error\n");
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] = '\0';
return reverseString;
}
else {
printf("error while allocating memory\n");
return NULL;
}
}
【问题讨论】:
-
你确定错误是指这个确切的代码吗?我看不出有什么问题。不过请注意,最好不要将变量命名为与函数相同的名称。
标签: c visual-studio warnings compiler-warnings