
一个关于C++指针的问题!希望高手给予回答,谢谢。。
#include<iostream>usingnamespacestd;voidmain(){int*a=(int*)(0x00467938);cout<<"a'sadd...
#include<iostream>
using namespace std;
void main()
{
int *a=(int*)(0x00467938);
cout<<"a's address is :"<<a<<endl;
cout<<"a's value is :"<<*a<<endl;
}
里面地址没问题的,,还有,,,调试结果是:a's address is : 0x00467938
当运行到*a时,系统提示出错。。希望高手解答,谢谢了,,欢迎讨论。。 展开
using namespace std;
void main()
{
int *a=(int*)(0x00467938);
cout<<"a's address is :"<<a<<endl;
cout<<"a's value is :"<<*a<<endl;
}
里面地址没问题的,,还有,,,调试结果是:a's address is : 0x00467938
当运行到*a时,系统提示出错。。希望高手解答,谢谢了,,欢迎讨论。。 展开
展开全部
实验1:
#include <iostream>
using namespace std;
int main()
{
int *a,p=10;
a=&p;
cout<<a<<endl;
cout<<*a<<endl;
return 0;
}
输出:
0x7fbffff7e4
10
接着改代码:
实验2:
#include <iostream>
using namespace std;
int main()
{
int *a=(int *)0x7fbffff7e4,p=10;
*a=33;
cout<<a<<endl;
cout<<*a<<endl;
return 0;
}
输出:
0x7fbffff7e4
33
接着换一台机器:
运行上边代码:正常
输出:
0x7fbffff7e4
33
注释掉赋值那一句话:
输出:
0x7fbffff7e4
48
正常
实验3:
把地址改为0x7fbffff7e3,
输出:
0x7fbffff7e3
12331
正常。
推测:是不是地址的问题。
程序运行的时候,不同的内容存放在不同的地方:
代码区:就是存放你的程序的编译后的可执行代码的地方了
数据区:存放你的程序静态数据,如全局变量、常量等。
栈:在函数调用中,保存程序的当前运行状态、函数的参数、返回结果等。
堆:在分配给一个程序的内存中,除了上面三部分,剩下的就是堆了,也就是程序的自由空间,局部变量(自动变量)等,还有New给指针用的空间,都在这里分配。
#include <iostream>
using namespace std;
int main()
{
int *a,p=10;
a=&p;
cout<<a<<endl;
cout<<*a<<endl;
return 0;
}
输出:
0x7fbffff7e4
10
接着改代码:
实验2:
#include <iostream>
using namespace std;
int main()
{
int *a=(int *)0x7fbffff7e4,p=10;
*a=33;
cout<<a<<endl;
cout<<*a<<endl;
return 0;
}
输出:
0x7fbffff7e4
33
接着换一台机器:
运行上边代码:正常
输出:
0x7fbffff7e4
33
注释掉赋值那一句话:
输出:
0x7fbffff7e4
48
正常
实验3:
把地址改为0x7fbffff7e3,
输出:
0x7fbffff7e3
12331
正常。
推测:是不是地址的问题。
程序运行的时候,不同的内容存放在不同的地方:
代码区:就是存放你的程序的编译后的可执行代码的地方了
数据区:存放你的程序静态数据,如全局变量、常量等。
栈:在函数调用中,保存程序的当前运行状态、函数的参数、返回结果等。
堆:在分配给一个程序的内存中,除了上面三部分,剩下的就是堆了,也就是程序的自由空间,局部变量(自动变量)等,还有New给指针用的空间,都在这里分配。
更多追问追答
追问
那个地址没有问题吧!我也是像你实验一那样产生的地址。。不过我用的是new ,不是变量。
我验证了一下,发觉,
#include
using namespace std;
int main()
{
int *a=(int *)0x7fbffff7e4,p=10;
*a=33;
cout<<a<<endl;
cout<<*a<<endl;
return 0;
}
如果没有*p=33;这样就会出错,如果有就不会,请问这是什么原因呢?谢谢解答。
追答
new出来的地址和系统自己分配的地址貌似有点区别。
new的变量存放在堆中。而一般的参数都存储在栈中。两者的地址申请方式也有不同:
我没有报错啊,你用的什么编译器

2025-08-05 广告
由于 Paykka 的所有操作流程都是线上化的,所以推测其支持移动端操作,比如通过 APP 或者适配移动端的网页端。这方便用户随时随地管理自己的账户和资金,提升了使用的便捷性。具体情况可咨询官方确认。...
点击进入详情页
本回答由paykka提供
展开全部
你按绝对地址访问,
你能保证这个地址一定存在?或有访问权限?
你能保证这个地址一定存在?或有访问权限?
追问
不是,那个地址是这样产生的,这样有问题么?
void main()
{
int *a=new p;
cout<<"a's address is :"<<a<<endl;
// cout<<"a's value is :"<<*a<<endl;
}
追答
cout<<"a's address is :"<<(int)a<<endl;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同求!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int *a=(int*)(0x00467938);
你 这里是想表达什么意思?
你 这里是想表达什么意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询