首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问关于C/C++数据类型地址的一个有关问题

2012-09-16 
问关于C/C++数据类型地址的一个问题比如一个结构:typedef struct DATA{int achar bint c}DATADATA *p

问关于C/C++数据类型地址的一个问题
比如一个结构:
typedef struct DATA
{
int a;
char b;
int c;
}DATA;

DATA *p = (DATA *)0x50923312; //该常量指代一个有效的地址

那么在运行的时候会不会把地址0x50923312后面的sizeof(DATA)大的内存当成是p指针指代的结构体的区域?

ps: 不知道该怎么个问法,如果有人懂我的想法,能不能帮我解说一下这个问题?

[解决办法]
可以, 不过这块内存可能不能访问。
[解决办法]
DATA *p = &a;
p指向了a所在地址,后面的sizeof(DATA)大的内存当成是p指针指代的结构体的区域
===================
a地址之后的区域的内容就是a、接着b、c
对这一片的内容做什么理解都可以,也就是结果不一定的

[解决办法]
理解正确。

在不同平台下注意栈的增长方式就可以了吧
[解决办法]
win32下跑可能没问题,用户进程空间与内核空间是分开的。是否出问题取决于系统有效内存的大小。这么访问假如踩到关键内存(如其他程序),那么其他程序可能会崩溃。

嵌入式环境下这么做是很危险的。因为内核与普通程序是共享空间的。

热点排行