我将缓冲区 (char*) 传递给 C 中的函数。
在函数内部,我为缓冲区分配内存并附加一个字符串(来自虚拟服务器的响应)。当在函数内部打印时,字符串将显示为从服务器发送的。
当尝试从函数外部读取缓冲区时,我没有得到我需要的结果:
A。// 字符* server_message; // 不起作用,错误:: 分段错误(核心已转储)
b. // char* server_message = calloc((BUFFER_SIZE) + 1, sizeof(char)); // 不起作用,没有生成错误,下面的 server_message 的 printf 打印一个空值:: ==> server_message:: || ||
C。char* server_message = calloc((1000 * BUFFER_SIZE) + 1, sizeof(char)); // 分配超出所需内存的工作:: ==> server_message:: || 2016-03-08 12:20:13 你好 ||
我根本不喜欢选项 c,因为我分配的内存超出了我的需要。出于测试目的,BUFFER_SIZE 当前设置为 10。
这是调用部分::
write_to_server(client_socket, message, server_message);
free(message);
printf("\n\n==> server_message:: || %s ||\n\n", server_message);
if (server_message != NULL)
free(server_message);
Run Code Online (Sandbox Code Playgroud)
这是 write_to_server 函数代码:
void write_to_server(int file_descriptor, char* message, char* server_message) …Run Code Online (Sandbox Code Playgroud)