如何解决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;
}
}