Я пытаюсь выполнить две строки, предполагая, что строка «dest» не имеет достаточного пространства для добавления другой, поэтому я использую динамические массивы для ее решения.Использование realloc для concat строк
Ошибка при попытке скомпилировать код. Ошибка mremap_chunk.
Я не знаю, что я пропускаю, так как вызов перераспределить имеет все права Params место в
Ошибка.
malloc.c:2869: mremap_chunk: Assertion `((size + offset) & (GLRO (dl_pagesize) - 1)) == 0' failed.
Aborted (core dumped)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *strcatt(char *s1, char *s2)
{
int a = strlen(s1);
int b = strlen(s2);
int i, size_ab = a+b;
s1 = (char *) realloc (s1, size_ab*sizeof(char));
for(i=0; i<b; i++) {
s1[i+a]=s2[i];
}
s1[size_ab]='\0';
return s1;
}
int main()
{
char s1[]="12345";
char s2[]="qwerty";
strcatt(s1,s2);
printf("%s\n", s1);
return 0;
}
Заменить 'size_ab = a + b' на' size_ab = a + b + 1' – GMichael