我有这个 C 函数。
void execMessage(int sockfd,void *structCHARMS, ClientData *client)
{
ClientData *client_recv = (ClientData *) structCHARMS;
client->local_addr=client_recv->local_addr;
client->mode = client_recv->mode;
char*msg;
CharmsMsg chmsg = {charms_msg_map[XTypes_CONFIG_PARAM].msg_code, client, 1184};
msg = encode(&chmsg, "0.01");
ssize_t n = 0;
n = send(sockfd,msg,strlen(msg), 0);
}
它是从连接到 TCP 客户端的经典 TCP 服务器的主要函数中调用的。它创建一条消息(使用特定的函数编码)并将其发送到服务器。
问题是:当将此函数插入到 main()
的同一文件中时,它可以正常工作,但是当我将其插入到另一个文件中时,程序运行时出现“段错误错误” 。
有人可以帮助我吗?谢谢
最佳答案
正如之前提到的,您需要弄清楚程序到底在哪里出现了段错误。现在,您创建一个本地 char* 并将指针的地址传递给编码函数。您有该功能的代码吗?在我看来,您希望从函数返回一个指针,并在其中返回编码的 c 字符串的堆。发送后,您需要释放该内存,以免发生泄漏。
关于C函数、网络编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878539/