这段代码中的不透明是什么?

时间:2014-04-15 06:25:32

标签: c types

现在几乎每个人都听说过HeartBleed漏洞。

如果您检查代码是问题的根源,您可以找到以下结构:

struct {
      HeartbeatMessageType type;
      uint16 payload_length;
      opaque payload[HeartbeatMessage.payload_length];
      opaque padding[padding_length]; 
   } HeartbeatMessage;

自从上次我在C上主动编程以来已经有一段时间了,但我仍然用它来编写小程序或片段。

重点是我从未使用过opaque,我想知道opaque代表的是什么。

1 个答案:

答案 0 :(得分:3)

" 不透明"当您需要填补空白时,它通常用于商业和内部/专有API。在C / C ++声明中。

由于您不知道该类型是否为指针(在这种情况下您将知道其大小)或整个结构/类,因此您无法推断出任何内容,因此代码可用作通用关于如何布置记忆的想法。

他们隐藏您的信息。这是一种常用的技术,特别是用于安全措施的时候,就像上面发布的代码一样。