在不同函数中分配的 realloc 指针
Realloc pointer that is malloced in different function
我有这个功能:
static void unfoldLines(char **pbuff, char **lines, int foldCount) {
int i, j;
for(i = 1; i <= foldCount; i++) {
removeEOL(lines[i]);
for(j = 0; j < strlen(lines[i]); j++) {
while(isspace(lines[i][j])) {
lines[i]++;
}
}
}
lines[1] = realloc(lines[1], sizeof(char) * (strlen(lines[1]) +
strlen(lines[2]) + 1));
exit(0);
}
lines
并且它的指针已在先前的函数中分配。当我尝试重新分配行 [1] 时,出现此错误:
malloc: *** error for object 0x7fcec0404fe1: pointer being realloc'd was not allocated
我知道它已经分配了,为什么不能在这个函数中重新分配它?
lines[1]
在 for-loop 中递增。您应该保留从 malloc()
编辑的 return 的原始指针,并将它们与 realloc()
.
一起使用
此外,realloc()
可能会失败,因此您应该将 realloc()
的 return 值存储在一个临时指针中,只有在成功时才将其传输到原始指针。
我有这个功能:
static void unfoldLines(char **pbuff, char **lines, int foldCount) {
int i, j;
for(i = 1; i <= foldCount; i++) {
removeEOL(lines[i]);
for(j = 0; j < strlen(lines[i]); j++) {
while(isspace(lines[i][j])) {
lines[i]++;
}
}
}
lines[1] = realloc(lines[1], sizeof(char) * (strlen(lines[1]) +
strlen(lines[2]) + 1));
exit(0);
}
lines
并且它的指针已在先前的函数中分配。当我尝试重新分配行 [1] 时,出现此错误:
malloc: *** error for object 0x7fcec0404fe1: pointer being realloc'd was not allocated
我知道它已经分配了,为什么不能在这个函数中重新分配它?
lines[1]
在 for-loop 中递增。您应该保留从 malloc()
编辑的 return 的原始指针,并将它们与 realloc()
.
此外,realloc()
可能会失败,因此您应该将 realloc()
的 return 值存储在一个临时指针中,只有在成功时才将其传输到原始指针。