c-调用free时出现分段故障



我用c做了一个小服务器。当我在多次连接后拨打免费电话时,我有一个segfault,但我找不到它的来源。

一开始我以为它来自realloc,但即使它没有被调用,我也有segfault。

for (;;) {
if ((client = accept(sock, NULL, NULL)) < 0) {
err(EXIT_FAILURE, "Failed to accept client");
}
totalBytes = 0;
int size = 2048;
char* tmp = malloc(sizeof(char) * size);
if (tmp == NULL) {
err(EXIT_FAILURE, "Failed to malloc");
}
while ((r = read(client, buffer, BUFFER_SIZE)) > 0) {
totalBytes += r;
if (totalBytes >= size) {
size += totalBytes - size + 1;
tmp = realloc(tmp, sizeof(char) * size);
if (tmp == NULL) {
err(EXIT_FAILURE, "Failed to realloc");
}
}
buffer[r] = '';
strcat(tmp, buffer);
ioctl(client, FIONREAD, &r);
if (r <= 0) {
break;
}
}
char http_request[size];
strcpy(http_request, tmp);
free(tmp);
}

谢谢你的帮助。

正如kaylum所说,这解决了我的问题

tmp[0] = '';

谢谢

相关内容

  • 没有找到相关文章

最新更新