gpt4 book ai didi

c - 分配内存块然后创建内存的逻辑子 block 并返回指向这些子 block 的指针

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

我在一次采访中被问到这个问题,在尝试谷歌/搜索 SO 后我很困惑:

“编写一个分配 4K 内存块的 C 函数,然后创建 10 个逻辑子 block 并返回指向每个子 block 的指针”

我不完全确定问题中的“逻辑子 block ”是什么意思。解决这个问题的最佳方法是什么?

我能否简单地使用 malloc 分配一个 4k 的 block ,然后创建额外的指针,增加 1/10 的大小 (4k)?是否有一些智能位操作技巧可以让这一切变得简单?

提前致谢!

最佳答案

“我可以简单地使用 malloc 分配一个 4k block ,然后创建额外的指针,增加 1/10 大小 (4k) 吗?是否有一些智能位操作技巧可以使这变得容易?”

我认为这与位操作技巧无关,因为将 4k 除以 10 相当容易。

我更关心的是 malloc 将为您提供一个适合任何数据类型对齐的指针(例如,参见 online C standard draft ):

7.22.3 Memory management functions

(1) The order and contiguity of storage allocated by successive calls to the aligned_alloc, calloc, malloc, and realloc functions is unspecified. The pointer returned if the allocation succeeds is suitably aligned so that it may be assigned to a pointer to any type of object with a fundamental alignment requirement and then used to access such an object or an array of such objects in the space allocated (until the space is explicitly deallocated).

然而,将这样的内存块除以 10 并挑选出指向这些 block 的指针可能会给您提供与您要存储在其中的数据类型不正确对齐的指针。

关于c - 分配内存块然后创建内存的逻辑子 block 并返回指向这些子 block 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44477521/

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