【发布时间】:2012-08-03 17:00:43
【问题描述】:
我看到代码使用 sizeof(int) 为浮点分配内存。
我想知道sizeof(float) 在所有架构上是否总是等于sizeof(int)?
float *pointer2Float = (float *) USER_DEFINED_MALLOC (...,..., sizeof(int))
注意:我认为这个 USER_DEFINED_MALLOC 是传统 malloc 的包装器。
谢谢
问候
【问题讨论】:
-
您甚至不必在意。如果分配浮点数,请使用浮点数的大小。此外,无论如何都应该使用
sizeof(*ptr)而不是sizeof(int)。 -
否 - 有 64 位平台是
ILP64,其中 int 是 8 个字节,但 float 仍然是 4 个字节。还有 16 位平台,其中 int 是 2 个字节,float 仍然是 4 个字节。 -
还要记住,数据类型不绑定到架构。它们由任意数据模型定义,从技术上讲,任何人都可以为任何 CPU 架构提出新的模型。 64 位平台上最常见的数据模型将
long设置为64 位,将int设置为32 位,但这只是因为它方便,而不是因为某些技术限制。
标签: c++ c memory malloc sizeof