首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >所有对象是否都位于C中相同的地址空间?

所有对象是否都位于C中相同的地址空间?
EN

Stack Overflow用户
提问于 2020-09-26 06:21:04
回答 3查看 63关注 0票数 0

我正在试图计算C标准是否要求所有地址都在同一个地址空间中。如果我有两个不同类型的对象

代码语言:javascript
运行
复制
double d;
int i;

我不能对它们的地址执行指针运算,因为它们是不同类型的指针。但是,标准说我可以将字符类型指针指向那里,并获得对象中第一个字节的地址。

代码语言:javascript
运行
复制
char *dp = (char *)&d;
char *ip = (char *)&i;

用这些方法,我可以做指针运算,例如,计算它们在内存中的距离,(dp - ip)。当然,如果双倍和整数位于同一个内存中的话。他们总是在我知道的平台上这么做,但这是否有标准的保证呢?还是只有当我的char指针指向同一类型的东西时,才允许指针算术?

EN

Stack Overflow用户

发布于 2020-09-26 11:40:39

分配给malloc的内存可用于任何具有基本对齐要求的对象,其中包括所有“内置”类型(例如,编译器可能作为扩展提供的特殊类型),根据C 2018 7.22.3 1,因此所有这些对象都必须共享malloc使用的地址空间。

此外,任何类型的对象都可以放在结构或联合中,因此必须共享地址空间。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64074515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档