У меня есть эта функция в моей программе, в которой указатель * sm показывает ошибку при перераспределении. Я попытался с помощью mallo c и free вручную изменить размер * sm, но такая же ошибка отображается в функции free.
char *numc_util_add_str(char **str, int s) {
int size = 1;
char *sm = (char *)malloc(size + 1);
sm[0] = '0';
sm[1] = '\0';
while (s--) {
int l = strlen(str[s]);
int sz = l > size ? l : size;
int t, r, car = 0;
for (register int i = 0; i < sz; i++) {
t = (i <= l ? str[s][i] - 48 : 0) + (i <= size ? sm[i] - 48 : 0) + car;
r = t % 10;
car = t / 10;
sm[i] = 48 + r;
}
if (car) {
size++;
sm = (char *)realloc(sm, size + 1);
sm[size - 1] = 48 + r;
}
sm[size + 1] = '\0';
}
return sm;
}
Это отображается при отладке:
sm = (char *)realloc(sm, size + 1);
// Exception has occurred.
// Trace/breakpoint trap