gpt4 book ai didi

c - malloc 应该被赋予指针大小或内存大小?

转载 作者:行者123 更新时间:2023-12-02 09:38:29 27 4
gpt4 key购买 nike

我正在经历Beej’s Guide to Network Programming在第 45 页上,编写了以下代码;

struct pollfd *pfds = malloc(sizeof *pfds * fd_size);

我想知道是否应该
struct pollfd *pfds = malloc(sizeof(struct pollfd) * fd_size);

malloc返回一个指向指定大小的内存块的指针。

由于 *pfds 是一个指针,它的大小将是 4 或 8 个字节,所以我不明白为什么在创建数组时要考虑它的大小。

最佳答案

sizeof *pfds是结构的大小,而不是指针的大小。你的两个例子都是等价的。我更喜欢第一种形式,因为它更容易维护——如果结构的类型发生变化,你只需要在一个地方修复它。
sizeof pfds将是指针的大小。

关于c - malloc 应该被赋予指针大小或内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60875986/

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