用C语言做题遇到heap-buffer-overflow问题,以为是数组访问越界,百思不得其解。排查一番,问题出在未在字符串的末尾加上'\0',加上就好了:
char * longestPalindrome(char * s){
int maxLen = 1;
int index = 0;
int strLen = strlen(s);
if (strLen == 1) return s;
for (int i = 0; i < strLen; i++) {
for(int j = i + 1; j < strLen; j++) {
int ret = isPlalindrome(s, i, j);
if (ret && j - i + 1 > maxLen) {
maxLen = j - i + 1;
index = i;
}
}
}
char *res = (char*)malloc(maxLen+1);
memcpy(res, s+index, maxLen);
res[maxLen] = '\0';
return res;
}