c - 从 void ** 转换为 char ** 有多危险

标签 c pointers void-pointers

所以我们知道标准不强制指针大小相等。 ( herehere )(不讨论函数指针)

我想知道这在现实中怎么会成为一个问题。我们知道 void * 可以容纳任何东西,所以如果指针大小不同,那将是最大的大小。鉴于此,将 void ** 分配给 char ** 意味着麻烦。

我的问题是假设 void *char * 具有相同的大小会有多危险?是否真的有一种架构不是这样的?

还有,16位dos也不是我想听的! ;)

最佳答案

void *char * 保证具有相同的大小。

void ** 不保证与 char ** 具有相同的大小(但很可能在您的实现中它们会)。

(C99, 6.2.5p27) "A pointer to void shall have the same representation and alignment requirements as a pointer to a character type [...] Pointers to other types need not have the same representation or alignment requirements."

关于c - 从 void ** 转换为 char ** 有多危险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275713/

相关文章:

c - 安全结构嵌入式系统

c - 在 Makefile 中获取源代码结构

c - 从另一个结构体访问结构体中的元素

c++ - 如何在 C++ 中将数组类型衰减为 const 指针类型?

c - C中void指针的指针运算

c - 是否值得更改 C 声明以增加类型安全性?

c - 无锁多线程编程让事情变得更容易了吗?

c - C语言中如何清除字符缓冲区

c - 如何优雅地将大量方法指针传递给用 C 编写的 DLL?

c - 如何将堆栈中分配的空指针数组中的元素传输到堆中?