gpt4 book ai didi

c++ - 我可以将 void* 指针分配给 char* 指针吗?

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

我正在编码以重新实现 malloc 函数。我看到一个人的示例代码,其中有一些像这样的奇怪代码

struct s_block{
size_t size; // size per block
int free; // whether free flag exist
t_block pre;
t_block next;
void *magic_ptr;
int padding; // bytes for padding
char data[1]; // first byte of data, i.e. the address returned from malloc
};

typedef struct s_block *t_block;
t_block get_block(void *p) {
char *tmp;
tmp = p;
...
}

但我使用 gcc 或 g++ 编译这段代码,错误是“不能使用 void* pointer to char* pointer”。我想知道问题出在哪里? gcc 还是 g++?代码有误?

最佳答案

在 C++ 中,您必须显式地将 void* 转换为另一种类型:

char *tmp = static_cast<char*>(p);

在 C 中情况并非如此,您可以将 void* 分配给任何指针类型而无需强制转换。

关于c++ - 我可以将 void* 指针分配给 char* 指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26997291/

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