【发布时间】:2021-11-22 20:40:44
【问题描述】:
我有以下结构
struct connection
{
int *new_socket;
int type;
struct sockaddr_in address;
char *request_line;
};
我创建了一个 connection 结构的指针,例如 struct connection *con_obj=malloc(sizeof(struct connection)) 现在我想为
con_obj->request_line
我可以这样做吗
*(con_obj->request_line)= malloc(sizeof(char )*val);
或者我需要这样做
con_obj->request_line= malloc(sizeof(char )*val);//I don't think so
谁能告诉我这个
【问题讨论】:
-
@kiner_shah 许多 StackOverflow 用户不同意在 C 的情况下“您需要将其转换为适当的类型”,实际上他们建议不要这样做。 stackoverflow.com/questions/605845/…
-
您需要:
con_obj->request_line = malloc(sizeof(char) * val)。你为什么不试试?您的编译器会为您提供有价值的信息。 -
@kiner_shah 你不需要需要强制转换,但是你可以将它强制转换为合适的类型,但是这样的强制转换是没有用的。
-
在尝试访问
con_obj>request_line之前不要忘记检查if (con_obj != NULL)。 -
*(con_obj->request_line)这将访问单个char并且您的编译器应该警告“从不同大小的指针转换整数”或类似的。con_obj->request_line是一个指针,分配地址是完全有效的。如果第一个版本没有收到警告,则需要提高警告级别。