gpt4 book ai didi

c - 释放内存时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:40 24 4
gpt4 key购买 nike

我希望实现网络套接字握手,为此我使用了以下代码片段。但是当我开始释放动态分配的内存时出现段错误。第一次使用free函数的地方出现错误。请帮忙。

char rbuf[656];        
char handshake[800];
char *handshake_part2, *handshake_part3,*key,*magic,*final;
unsigned char hash [20];

key=strndup(rbuf+359, 24);
magic = malloc(strlen("258EAFA5-E914-47DA-95CA-C5AB0DC85B11")+2);
strcpy(magic,"258EAFA5-E914-47DA-95CA-C5AB0DC85B11");
final = malloc (60);
final = strcat(key,magic);
SHA1(final,strlen(final),hash);
base64(hash, sizeof(hash));
handshake_part2= malloc(400);
handshake_part2= base64(hash, sizeof(hash));
strcpy (handshake,"HTTP/1.1 101 Web Socket Protocol Handshake\r\nUpgrade: Websocket\r \nConnection: Upgrade\r\nSec-WebSocket-Accept: ");
strcat(handshake,handshake_part2);
handshake_part3= malloc(400);
handshake_part3="\r\nWebSocket-Origin: http://localhost:9605\r\nWebSocket-Location: ws://localhost:9609/\r\n\r\n";
strcat(handshake,handshake_part3);
printf("Response Header :\n%s", handshake);

free(handshake_part3);
handshake_part3=NULL;
printf("Free 1");
free(handshake_part2);
handshake_part2=NULL;
printf("Free 2");
free(final);`
final=NULL;
printf("Free 3");
free(magic);
magic=NULL;
printf("Free 4");
free(key);

最佳答案

您正在将 handshake_part3 重新分配为常量字符串 "\r\n...";您是不是要用 strcpy()(最好是 strncpy() 或等价物!)代替它?

关于c - 释放内存时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11512493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com