注册 登录
编程论坛 VC++/MFC

指针使用问题

duwn124 发布于 2010-12-10 16:10, 669 次点击
main()
{
    int *ptr;
    ptr = (int *)0x8080;
    *ptr = 0xaabb;
}

如上代码可以编译并运行,但是一会程序就崩溃了,求高人解释啊,弄不懂。谢谢了!
6 回复
#2
duwn1242010-12-10 21:07
自己顶,期待高人的出现。。。
#3
laoyang1032010-12-11 13:16
int *ptr;
    ptr = (int *)0x8080;
    *ptr = 0xaabb;
}
首先定义整形数据指针   ptr 在栈向低地址方向生长四个字节
让后把  0x8080 强制转化为指向整形数据的指针
存放到  ptr中  也就是刚才栈的那四个字节
然后对  ptr所指向的内存赋值为16进制的0xAABB
但是如果要输出 *ptr的话是输不出来的  因为地址为0x8080的内存不是编译系统分配的
#4
duwn1242010-12-11 19:35
回复 3楼 laoyang103
不能认为分配地址么?麻烦高人详细讲一讲啊,小弟学C++没多久的丫!多谢了!
#5
duwn1242010-12-11 19:39
回复 3楼 laoyang103
不能人为分配地址么?麻烦高人详细讲一讲啊,小弟学C++没多久的丫!多谢了!
#6
laoyang1032010-12-11 21:46
分配地址  不是你做的事  是操作系统做的事
自己分配地址  我目前不会
#7
lucky5635912010-12-14 07:50
编译器和系统才能分配地址,你分配的万一是系统最重要的内存单元呢
1