首页 > 编程 > C++ > 正文

C++ __alignof Operator

2019-11-08 02:41:58
字体:
来源:转载
供稿:网友

          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,为之前分配内存的对齐边界大小。

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选