所以在我的程序中,我试图编辑原始数组“frags”的元素,这些元素最初分配了存储在某些插槽中的字符串。但我不完全确定如何。在程序过程中,我需要重新分配原始数组中的元素,以便它们可以存储更大长度的字符串,但我的方法似乎导致 valgrind + 功能错误。Valgrind 说错误来自 realloc,功能错误是输出不正确。
int main(void) {
char *frag[3];
char *frag1 = malloc(4), *frag2 = malloc(5);
strcpy(frag1, "him");
strcpy(frag2, "hers");
frag[0] = frag1;
frag[1] = frag2;
char *k = frag[0];
char *l = frag[1];
k = realloc(k, 500);
strcat(k, l);
printf("%s\n ", frag[0]);
printf("%s\n ", frag[1]);
free(k);
free(l);
return 0;
}
当您将 malloc 和 realloc 分配给不同的变量时,我不是 100% 清楚它们是如何工作的。如果你这样做
char *k = malloc(5);
char *l = k;
l = realloc(l, 100);
您是否正在重新分配 k 仍指向的内存?释放和重定位指针“l”的变化会影响指针“k”的内容吗?抱歉,我是 C 新手。