C++ __alignof Operator

          C++介绍alignof操作符返回指定类型的字节对齐值。为了获得最大可移植性,你应该使用alignof操作符代替微软特定的__alignof 操作符。


微软专用

  返回类型的长度值(size_t),类型要求对齐。


语法

      __alignof(   
   type    
)  

注释


例如:   

表达式

返回值

__alignof( char )

1

__alignof( short )

2

__alignof( int )

4

__alignof( __int64 )

8

__alignof( float )

4

__alignof( double )

8

__alignof( char* )

4


返回值和基本类型的sizeof返回值相同。然而,考虑这个例子:

typedef struct { int a; double b; } S;  
// __alignof(S) == 8 

在这个例子中__alignof返回值是结构中要求对齐的最大元素。

相似的,对于下面这个例子:

typedef __declspec(align(32)) struct { int a; } S; 

__alignof(S)等于32.

__alignof的一个用途是作为参数传递给自己的内存分配例程。例如,给出下面的定义的结构S,你可以调用命名为aligned_malloc的内存分配例程分配内存,使其具有特定的对齐边界。

typedef __declspec(align(32)) struct { int a; double b; } S;  
int n = 50; // array size  
S* p = (S*)aligned_malloc(n * sizeof(S), __alignof(S)); 

其中sizeof(S)等于16,需要分配的内存大小为n*16;__alignof(S)等于32,为之前分配内存的对齐边界大小。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值