gpt4 book ai didi

c - 了解 mmap 大小参数

转载 作者:太空宇宙 更新时间:2023-11-04 03:02:46 25 4
gpt4 key购买 nike

我很难理解 mmap 的大小参数(抱歉我的 C 生锈了)。例如(取自另一个 SO 帖子)

如果我们有:

typedef struct container {
int counter;
} container;

container *memory;
memory = mmap(NULL, 500*sizeof(container), PROT_READ|PROT_WRITE, MAP_SHARED, -1, 0);

container *entry = (container *) malloc(sizeof(container));
entry->counter = 1;
// Just arbitrarily
memory[1] = *entry;

memory[1] 不会只是一个指向容器的指针,因此不是 sizeof(container) 吗?或者是否有使用 mmap 的方法确实可以确保只能插入 500 个容器条目?还是应该按照 sizeof(container) 的步长访问内存?

谢谢!

最佳答案

首先,当您使用 mmap 获取内存时,您的问题中没有任何内容是特定于 mmap 的。如果您只是这样做,同样的结论也适用:

container *memory = malloc(500*sizeof(container));

在任何一种情况下,你都有一个长度为 500*sizeof(container) 字节的内存块,返回的指针可以被认为是指向 500 个数组的第一个元素 容器结构。

关于c - 了解 mmap 大小参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407208/

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