asd*_*sds 5 c linux networking
我正在阅读Beej\xe2\x80\x99s 网络编程指南,在第 45 页上编写了以下代码;
\n\nstruct pollfd *pfds = malloc(sizeof *pfds * fd_size);\nRun Code Online (Sandbox Code Playgroud)\n\n我想知道是否应该
\n\nstruct pollfd *pfds = malloc(sizeof(struct pollfd) * fd_size);\nRun Code Online (Sandbox Code Playgroud)\n\n由于malloc返回一个指向指定大小的内存块的指针。
\n\n由于 *pfds 是一个指针,它的大小将为 4 或 8 字节,所以我无法理解为什么在创建数组时要考虑它的大小。
\nsizeof *pfds是结构体的大小,而不是指针的大小。你的两个例子都是等价的。我更喜欢第一种形式,因为它更容易维护 - 如果结构的类型发生变化,您只需在一个位置修复它。
sizeof pfds将是指针的大小。