gpt4 book ai didi

c - malloc 接受所有数据类型的通用函数

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

给定一个函数 as(它可以在内部使用 malloc())as void* function_ptr(void *ptr, int size);

其中 void *ptr 是一个空指针,size 是数字,作为返回,它应该根据数据类型分配内存。对于int,它应该分配4*size(considering 32 bit),对于char 1*size。例如,

对于整数数据类型,function_ptr((void *)some_int_ptr, 10 )
它应该分配 10 *4(32 bit) = 40 bytes
function_ptr((void *)some_char_ptr, 10 ), 应该分配10个字节

问题是我们如何将 void * 类型转换为 int/char/double 指针,因为函数不知道哪种数据类型被类型转换为 void* 吗?

这是一个面试问题,我试着回答为发送 1 个提到数据类型的参数,因此我们可以分配和分配内存但没有被接受

void* function_ptr(void *ptr, int size, int data_type);

最佳答案

您无法从函数内部知道数据类型,因为没有可用的类型信息。有两种选择:

1) 要么使函数在字节 的大小上工作,那么它就不需要知道类型。也许这才是面试官的意思?

2) 重写函数,使其在某处包含类型信息。

还有一些不好的选择,例如使用全局变量或用包装宏替换函数,但都不推荐。

关于c - malloc 接受所有数据类型的通用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37536934/

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